raw<-"
+ x y z w a s d f g h
+ 1 2 3 4 5
+ 1 2 3 4 5 6 7 8 9 10
+ 1 2 "
raw
[1] " \nx y z w a s d f g h \n1 2 3 4 5 \n1 2 3 4 5 6 7 8 9 10\n 1 2 "
read.fwf(textConnection(raw),widths=c(rep(2,10)))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1
2 x y z w a s d f g h
3 1 2 3 4 5
4 1 2 3 4 5 6 7 8 9 10
5 1 2
read.fwf(textConnection(raw),widths=c(rep(2,10)),skip=1)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 x y z w a s d f g h
2 1 2 3 4 5
3 1 2 3 4 5 6 7 8 9 10
4 1 2
是否有其他方法可以使用read.fwf或read.table获取正确的格式数据?
我可以在read.fwf中使用skip=1
或使用read.table
获得相同的结果吗?
答案 0 :(得分:0)
从管道而不是从文件中读取,让管道处理您需要的转换,这可以像grep -v '^$'
一样简单,以跳过空行。
pipe()
中描述了help(connections)
功能。
以下是一个例子:
R> read.fwf("/tmp/raw.txt", width=rep(2,10), skip=1)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 x y z w a s d f g h
2 1 2 3 4 5
3 1 2 3 4 5 6 7 8 9 10
4 1 2
R> read.fwf(pipe("grep -v '^$' /tmp/raw.txt"), width=c(rep(2,10)))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 x y z w a s d f g h
2 1 2 3 4 5
3 1 2 3 4 5 6 7 8 9 10
4 1 2
R>