10

这里还有其他问题解决了同样的问题,但我不知道如何基于它解决我的问题。所以,我有 5 个数据帧,我想使用 rbind 将行合并到一个唯一的数据帧中,但它返回错误:

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

数据框具有相同的列但不同的行数。我认为 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 重复的这个错误。

任何想法?

提前致谢

4

2 回答 2

27

我最近有同样的错误。在我的情况下结果是问题是数据框的属性之一是 list。将其转换为基本对象(例如数字)rbind后工作得很好。

顺便说一句,行名是第一个变量左侧的“行号”。在您的示例中,它是 1, 2, 3, ... (与您的 id 变量相同)。

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

于 2014-04-16T17:10:23.447 回答
4

我有同样的错误。

我的问题是dataframes 中的一列本身就是一个 dataframe。我不能轻易找到有问题的专栏

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)后按预期工作

于 2019-08-16T06:15:56.563 回答