重复'row.names'错误读取表。 row.names = NULL移动列

时间:2012-11-05 20:13:46

标签: r

这类似于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

(这是一个包含数千行和~200列的CSV文件的Excel摘录。第一行中的条目数与其他所有条目数相同。第一行中有重复项。列不与此视图中的标签对齐,但它们在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已被引入,整个行向右移动。

这是&gt;的尾端。头(lm.table)结果。它将列标签移动到未定义的列上(我认为这也显示了列标签的数量=列数,从检查中也是如此。)

      FVavR FVstdR FIdlR

1  3.959140      2    NA

2  5.285770     20    NA

3  4.274140     26    NA

我知道为什么我会在列中进行移位以及如何不移位并使row.names只是递增数字?

4 个答案:

答案 0 :(得分:7)

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

colnames(rec) <- c(colnames(rec)[-1],"x")
rec$x <- NULL

答案 1 :(得分:0)

我使用了以下代码:

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

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

答案 2 :(得分:0)

我的问题与TAB分隔文件的字段分隔符相关联:

如果我没有指定字段分隔符:

> 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")

然后没有错误消息。

这是我的文件内容(^我是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 $ asterix_potion ^ Imothur ^ IAcinetobacter baumannii ^ I0.28010000 ^ I0.021539851624928375 ^ I2869.5000 ^ I2880.7500 ^ I4 $

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

答案 3 :(得分:0)

如果其他任何人遇到此问题,我的问题是某些列中有空格。填充完这些空间后,我的问题消失了,我可以很好地加载.csv文件。