0

我的代码是

ff <- tempfile()
cat(file=ff,"11220011003","11220011003",sep="\n");
x <- read.fwf(ff,widths=c(2,2,4,3))

我得到一个这样的矩阵:

11 22 11  3
11 22 11  3

但我想要的结果是

11 22 0011 003
11 22 0011 003

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

4

2 回答 2

3

read.fwf返回一个data.frame,而不是一个矩阵;它似乎正在返回一个数字向量的data.frame。如果您想要一个字符向量的 data.frame,请指定colClasses(参见参考资料?read.table)。

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"
于 2012-11-05T23:04:10.153 回答
2

试试这个:

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()

于 2012-11-05T23:08:04.170 回答