我创建了一个名为test2.txt的文件,其中包含以下信息:
col1 col2 col3 col4
1 A B
2 A B
3 A B
4 A B
5 A B
6 A B
7 A C
8 A C
使用以下命令阅读时:
test.ws=read.table(paste(inputDir,'test2.txt',sep=''),fill=T,header=T)
我得到以下内容:
col1 col2 col3 col4
1 1 A B NA
2 2 A B NA
3 3 A B NA
4 4 A B NA
5 5 A B NA
6 6 A B NA
7 7 A C NA
8 8 A C NA
列向左移动。是什么给了什么?!
我尝试了以下内容:
> count.fields(paste(inputDir,'test.txt',sep=''))
[1] 4 3 3 3 3 3 3 4 4
它告诉我标签的数量不同,但事实并非如此!我该怎么处理这些信息?值得一提的是,将此.txt文件导入Excel时,它会正确读取选项卡,不会跳过或移动任何列。
我尝试单独分配列名,但这不起作用:
colNames=names(test.ws)
test.ws=read.table(paste(inputDir,'test2.txt',sep=''),skip=1,fill=T,header=T,col.names=colNames)
收率:
Warning message:
In read.table(paste(inputDir, "test2.txt", sep = ""), skip = 1, :
header and 'col.names' are of different lengths
我在网上发现了一个类似的问题:https://stat.ethz.ch/pipermail/r-help/2008-July/166676.html。这个问题没有得到解答。
答案 0 :(得分:5)
如果这是制表符分隔数据,请相应地设置分隔符:sep="\t"
。否则(来自read.table
的帮助)
如果
sep = ""
(read.table的默认值),则分隔符为“空格”,即一个或多个空格,制表符,换行符或回车符。
因此多个连续的标签被视为单个分隔符。
或使用read.delim
代替read.table
,因为其默认值更适合制表符分隔数据。
答案 1 :(得分:2)
也许你有固定宽度的列?
read.fwf(textConnection("col1 col2 col3 col4
1 A B
2 A B
3 A B
4 A B
5 A B
6 A B
7 A C
8 A C"),widths = rep(5,4))
V1 V2 V3 V4
1 col1 col2 col3 col4
2 1 A B <NA>
3 2 A B <NA>
4 3 A B <NA>
5 4 A B <NA>
6 5 A B <NA>
7 6 A B <NA>
8 7 A C
9 8 A C