R rbind 错误 row.names 不允许重复 [英] R rbind error row.names duplicates not allowed

查看:21
本文介绍了R rbind 错误 row.names 不允许重复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

There are other issues here addressing the same question, but I don't realize how to solve my problem based on it. So, I have 5 data frames that I want to merge rows in one unique data frame using rbind, but it returns the error:

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

"Error in row.names<-.data.frame(*tmp*, value = value) : 'row.names' duplicated not allowed In addition: Warning message: non-unique values when setting 'row.names': ‘1’, ‘10’, ‘100’, ‘1000’, ‘10000’, ‘100000’, ‘1000000’, ‘1000001 [....]"

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

The data frames have the same columns but different number of rows. I thought the rbind command took the first column as row.names. So tried to put a sequential id in the five data frames but it doesn't work. I've tried to specify a sequential row names among the data frames via row.names() but with no success too. The merge command is not an option I think because are 5 data frames and successive merges will overwrite precedents. I've created a new data frame only with ids and tried to join but the resulting data frame don't append the columns of joined df.

跟随 df 1 的摘录:

Follows an extract of 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 重复的这个错误.

The four other df's are the same structure, except the 'id' columns that don't have duplicated numbers among it. 'pol' and 'image' columns are defined as levels. and all.pol <- rbind(df1,df2,df3,df4,df5) return the this error of row.names duplicated.

有什么想法吗?

提前致谢

推荐答案

我最近遇到了同样的错误.在我的例子中,问题是数据框的属性之一是列表.将其转换为基本对象(例如数字)后,rbind 工作得很好.

I had the same error recently. What turned out to be the problem in my case was one of the attributes of the data frame was a list. After casting it to basic object (e.g. numeric) rbind worked just fine.

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

By the way row name is the "row numbers" to the left of the first variable. In your example, it is 1, 2, 3, ... (the same as your id variable).

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

You can see it using rownames(df) and set it using rownames(df) <- name_vector (name_vector must have the same length as df and its elements must be unique).

这篇关于R rbind 错误 row.names 不允许重复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆