出于某种莫名其妙的原因,read.fwf正在反转我正在读取的表中所有数字的符号。我的代码如下:
person.widths <- c(6, 8, 3, 6, rep(7, 8), 6, 12)
meas <- - read.fwf(file=myfile,
header=FALSE,
widths=person.widths,
colClasses=c(rep("numeric", 14)),
na.strings='.'
)
生成的数据框如下所示:
head(meas)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
1 -1 -3.16 -1 -6 -22 -0.79 -0.71 0.48 -0.70 0.44 0 -0.88 -236 -22227190
2 -2 -4.87 -1 -6 -24 -1.15 -1.23 -0.27 -0.96 0.03 0 -0.76 -592 -22227199
3 -3 -2.59 -1 -6 -21 -0.72 -0.32 1.39 -0.34 1.32 0 -0.90 -592 -22227200
4 -4 0.00 2 0 0 0.00 -1.00 0.00 -1.00 0.00 0 0.00 -206 -22227201
5 -5 -3.87 -1 -6 -23 -0.90 -1.49 -0.65 -1.38 -0.35 0 -0.84 -506 -22227202
6 -6 -5.72 0 -6 -25 -1.52 -1.00 0.00 -1.00 0.00 0 0.00 -5859 -22227204
但是原始数据是这样的:
> foo <- readLines(myfile)
> head(foo)
[1] " 1 3.16 1 6 22 0.79 0.71 -0.48 0.70 -0.44 0.00 0.88 236 22227190"
[2] " 2 4.87 1 6 24 1.15 1.23 0.27 0.96 -0.03 0.00 0.76 592 22227199"
[3] " 3 2.59 1 6 21 0.72 0.32 -1.39 0.34 -1.32 0.00 0.90 592 22227200"
[4] " 4 0.00 -2 0 0 0.00 1.00 0.00 1.00 0.00 0.00 0.00 206 22227201"
[5] " 5 3.87 1 6 23 0.90 1.49 0.65 1.38 0.35 0.00 0.84 506 22227202"
[6] " 6 5.72 0 6 25 1.52 1.00 0.00 1.00 0.00 0.00 0.00 5859 22227204"
这对我来说没有任何意义。在这种情况下,我可以使用普通的 read.table 并且它工作正常,但我不知道为什么当我使用 read.fwf 时符号会被切换。大家有什么想法吗?
最佳答案
这当然只是一个简单的拼写错误。在行中
meas <- - read.fwf(file=myfile,
您应用显式 * (-1)
乘以杂散-
在<-
之后徘徊赋值运算符和实际函数之前 read.fwf()
.
我们都经历过这样的情况。好的编辑器可以帮助正确突出显示颜色。
关于read.fwf 反转所有数字的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43443778/