首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用函数read.fwf时,如何在字符中保留零?

在R中使用函数read.fwf时,如何在字符中保留零?
EN

Stack Overflow用户
提问于 2012-11-06 06:43:15
回答 2查看 166关注 0票数 0

我的代码是

代码语言:javascript
复制
ff <- tempfile()
cat(file=ff,"11220011003","11220011003",sep="\n");
x <- read.fwf(ff,widths=c(2,2,4,3))

我得到了一个这样的矩阵:

代码语言:javascript
复制
11 22 11  3
11 22 11  3

但我想要的结果是

代码语言:javascript
复制
11 22 0011 003
11 22 0011 003

我应该如何纠正我的代码,以获得我想要的矩阵?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 07:04:10

read.fwf返回一个data.frame,而不是一个矩阵;而且它似乎返回一个数值向量的data.frame。如果需要字符向量的data.frame,请指定colClasses (请参见?read.table)。

代码语言:javascript
复制
x <- read.fwf(ff,widths=c(2,2,4,3), colClasses=rep("character",4))
x
#   V1 V2   V3  V4
# 1 11 22 0011 003
# 2 11 22 0011 003
str(x)
# 'data.frame':   2 obs. of  4 variables:
#  $ V1: chr  "11" "11"
#  $ V2: chr  "22" "22"
#  $ V3: chr  "0011" "0011"
#  $ V4: chr  "003" "003"
票数 3
EN

Stack Overflow用户

发布于 2012-11-06 07:08:04

试试这个:

代码语言:javascript
复制
ff <- tempfile()
cat(file=ff,"11220011003","11220011003",sep="\n");
x <- read.fwf(ff,widths=c(2,2,4,3), colClasses = "character")
x
#   V1 V2   V3  V4
# 1 11 22 0011 003
# 2 11 22 0011 003

然后,您可以使用as.integer()将所需的列转换为整数

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13241600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档