7

这类似于read.csv row.nameshttps://stackoverflow.com/questions/12425599/duplicated-row-names,但我没有看到有帮助的答案。

问题:尝试读取第一列中包含重复数字的文件,但在 row.names=NULL 时移动列标题。

我正在尝试将以下文件读入 R

TripId  VID TspVID  VWT VCLS    Week

201110041426    2226    33889   1   0   41

201110041501    2226    33889   1   0   41

201110041510    2226    33889   1   0   41

201110041557    2226    33889   1   0   41

(这是 CSV 文件的一小段摘录,包含数千行和约 200 列。第一行中的条目数与其他所有条目相同。第一行中有重复项。列没有t 与此视图中的标签对齐,但它们在 CSV 空间中对齐。)

命令

> lm.table  <- read.table(file= file.in, sep=",", header=TRUE)
Error in read.table(file = file.in, sep = ",", header = TRUE) : 
  duplicate 'row.names' are not allowed

不起作用。将第一列用于 row.names 意味着第一行的值比其他行少,事实并非如此。我当然不希望第一列作为 row.names。

我尝试设置 row.names=NULL

> lm.table  <- read.table(file= file.in, sep=",", header=TRUE, row.names=NULL)

哪个运行,但列已移动

> head(lm.table)

     row.names TripId   VID TspVID VWT VCLS       Week     Date TimeStart TimeEnd     Lat1

1 201110010006   2226 33889      1   0   40 2011/09/30 17:06:37  17:25:16 47.5168 -122.209

2 201110010028   2226 33889      1   0   40 2011/09/30 17:28:45  17:43:14 47.5517 -122.058

3 201110010000   2231 45781      1   0   40 2011/09/30 17:00:00  18:02:30 32.9010 -117.193

4 201110011407   2231 45781      1   0   40 2011/10/01 07:07:57  07:48:17 32.7044 -117.004

请注意,新的列名“row.names”已经被引入并且整行右移。

这是 > head(lm.table) 结果的结尾。它将列标签转移到一个未定义的列上(我认为这也显示了列标签的数量=列的数量,从检查来看也是如此。)

      FVavR FVstdR FIdlR

1  3.959140      2    NA

2  5.285770     20    NA

3  4.274140     26    NA

知道为什么我会在列中移动以及如何不移动并且让 row.names 只是升序数字吗?

4

5 回答 5

8

有同样的问题。刚刚添加了这一行:

colnames(rec) <- c(colnames(rec)[-1],"x")
rec$x <- NULL
于 2014-03-14T15:15:17.757 回答
0

我使用了以下代码:

lm.table  <- read.table("file name", header=TRUE, row.names=NULL)

这在左侧添加了一列带有编号的行名,但我没有发现列名被移动。可能是您的列名仍然匹配正确的列,但是 R 输出使它看起来像名称已经改变?

于 2012-11-05T20:31:31.647 回答
0

我的问题与制表符分隔文件的字段分隔符有关:

如果我不指定字段分隔符:

> condensed <- read.table("condense_report.tab", header=T)
 Error in read.table("condense_report.tab", header = T) : 
 duplicate 'row.names' are not allowed

如果我添加 sep=TAB

condensed <- read.table("condense_report.tab", header=TRUE, sep="\t")

然后没有错误信息。

这是我的文件内容(^I 是 TAB 字符,$ 是行尾标记):

样本^Imethod^Ispecies^Imean_frac^Istd_frac^Imean_dep^Imean_clsz^Inumrep$ asterix_potion^Imothur^IEnterococcus faecalis^I0.32290000^I0.021755985650701942^I3293.5000^I3309.7500^I4^I4. 28010000^I0.021539851624928375^I2869.5000^I2880.7500^I4$

问题在于物种列。它有空格,R 默认使用空格和制表符作为分隔符。因此,如果没有给出 sep 选项,则根据 R 的标题,您有一个额外的列。这是问题的根源。

于 2016-04-16T00:49:47.007 回答
0

如果其他人遇到这个问题,我的问题是某些列中有空格。填充这些空间后,我的问题就消失了,我能够很好地加载 .csv 文件。

于 2018-08-13T02:56:13.447 回答
0

我遇到了同样的问题。我将日期与时间戳合并,现在我可以从 csv 中读取。

您可以在 csv 中生成一个行号作为第一列(例如使用 python),然后再次读取它。

于 2015-08-24T10:11:07.083 回答