gpt4 book ai didi

r - 当 read.table 中的 5 行之后出现不同数量的列时,fill=TRUE 会失败吗?

转载 作者:行者123 更新时间:2023-12-02 01:34:23 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How can you read a CSV file in R with different number of columns

(5 个回答)


6年前关闭。




假设我们有一个文件名 test.txt其中包含未知数量的列:

1   2   3   4   5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5 6 7 8
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
fill=T当第 8 行超过 5 列时失败:
read.table('test.txt', header=F, sep='\t', fill=T)

结果:
   V1 V2 V3 V4 V5
1 1 2 3 4 5
2 1 2 3 4 5
3 1 2 3 4 5
4 1 2 3 4 5
5 1 2 3 4 5
6 1 2 3 4 5
7 1 2 3 4 5
8 1 2 3 4 5
9 6 7 8 NA NA
10 1 2 3 4 5
11 1 2 3 4 5
12 6 NA NA NA NA
13 1 2 3 4 5
14 6 NA NA NA NA
15 1 2 3 4 5
16 6 NA NA NA NA

但与 skip=3 ,一切正常
read.table('test.txt', header=F, sep='\t', fill=T, skip=3)

我们得到了我们所期望的:
  V1 V2 V3 V4 V5 V6 V7 V8
1 1 2 3 4 5 NA NA NA
2 1 2 3 4 5 NA NA NA
3 1 2 3 4 5 NA NA NA
4 1 2 3 4 5 NA NA NA
5 1 2 3 4 5 6 7 8
6 1 2 3 4 5 NA NA NA
7 1 2 3 4 5 6 NA NA
8 1 2 3 4 5 6 NA NA
9 1 2 3 4 5 6 NA NA

为什么会发生这种情况?是不是因为 fill=T只检查前 5 行?有没有办法解决这个问题?

最佳答案

我在 read.table 的示例中找到了正确的答案。

ncol <- max(count.fields('test.txt', sep = "\t"))
read.table('test.txt', header=F, sep='\t', fill=T, col.names=paste0('V', seq_len(ncol)))

这是因为 fill=T只检查前五行。解决方法是指定 col.names .

关于r - 当 read.table 中的 5 行之后出现不同数量的列时,fill=TRUE 会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32066049/

25 4 0