R rbind错误row.names不允许重复

时间:2014-03-31 16:14:36

标签: r rbind no-duplicates

这里还有其他问题可以解决同一个问题,但我没有意识到如何在此基础上解决我的问题。所以,我有5个数据帧,我想使用rbind合并一个唯一数据框中的行,但它返回错误:

row.names<-.data.frame中的错误(*tmp*,值=值):   不允许'row.names'重复 另外:警告信息: 设置'row.names'时的非唯一值:'1','10','100','1000','10000','100000','1000000','1000001 [....]“< / p>

数据框具有相同的列但行数不同。我认为rbind命令将第一列作为row.names。因此尝试在五个数据框中放置一个顺序ID,但它不起作用。我试图通过row.names()在数据框中指定顺序行名,但也没有成功。合并命令不是我认为的选项,因为5个数据帧和连续合并将覆盖先例。我只使用id创建了一个新数据框并试图加入,但结果数据框不会附加连接df的列。

跟随df 1的摘录:

  id    image     power     value pol class
1  1 tsx_sm_hh 0.1834515 -7.364787  hh    FR
2  2 tsx_sm_hh 0.1834515 -7.364787  hh    FR
3  3 tsx_sm_hh 0.1991938 -7.007242  hh    FR
4  4 tsx_sm_hh 0.1991938 -7.007242  hh    FR
5  5 tsx_sm_hh 0.2079365 -6.820693  hh    FR
6  6 tsx_sm_hh 0.2079365 -6.820693  hh    FR
[...]
1802124 1802124 tsx_sm_hh 0.1991938 -7.007242  hh    FR  

另外四个df是相同的结构,除了'id'列之外没有重复的数字。 'pol'和'image'列定义为级别。 并且all.pol <- rbind(df1,df2,df3,df4,df5)返回row.names重复的错误。

有什么想法吗?

提前致谢

2 个答案:

答案 0 :(得分:18)

我最近遇到了同样的错误。结果是我的问题是数据框的一个属性是列表。将它投射到基本对象(例如数字)后rbind工作得很好。

顺便说一下,行名是&#34;行号&#34;在第一个变量的左边。在您的示例中,它是1,2,3,...(与您的id变量相同)。

您可以使用rownames(df)查看并使用rownames(df) <- name_vector进行设置(name_vector必须与df具有相同的长度,并且其元素必须是唯一的。)

答案 1 :(得分:0)

我有同样的错误。

我的问题是,数据框中的一列本身就是一个数据框并且我无法轻易找到违规列

data.table::rbindlist()帮助找到了它

library(data.table)
rbindlist(a)
# Error in rbindlist(a) : 
#   Column 25 of item 1 is length 2 inconsistent with column 1 which is length 16. Only length-1 columns are recycled.


a[[1]][, 25] %>% class # "data.frame" K- this should obviously be converted to a column or removed

删除错误列do.call(rbind, a)后按预期工作