我的代码是
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
我应该如何更正我的代码以获得我想要的矩阵?
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"
试试这个:
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()