这里还有其他问题可以解决同一个问题,但我没有意识到如何在此基础上解决我的问题。所以,我有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重复的错误。
有什么想法吗?
提前致谢
答案 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)
后按预期工作