r - 在 data.frames 上进行 rbind,其中包含.. 2d“asis”对象
问题描述
给定两个尺寸相同且名称相同的 1-row data.frames
:
dn1 <- structure(list(A = structure(list(V1 = 0, V2 = 0, V3 = 0, V4 = 0,
V5 = 0, V6 = 0, V7 = 0, V8 = -0.5, V9 = 0, V10 = -0.5), class = c("AsIs",
"data.frame"), row.names = 1L), B = structure(list(V1 = 0, V2 = 0,
V3 = 0, V4 = 0, V5 = 0, V6 = -0.5, V7 = 0, V8 = 0, V9 = 0,
V10 = 0, V11 = 0, V12 = 0, V13 = 0, V14 = 0, V15 = 0, V16 = 0,
V17 = 0, V18 = 0, V19 = 0, V20 = 0, V21 = 0, V22 = 0, V23 = 0,
V24 = 0, V25 = 0, V26 = 0, V27 = 0, V28 = 0, V29 = 0), class = c("AsIs",
"data.frame"), row.names = 1L)), class = "data.frame", row.names = c(NA,
-1L))
dn2 <- structure(list(A = structure(list(V1 = 0, V2 = 0, V3 = 0, V4 = 0,
V5 = 0, V6 = 0, V7 = 0, V8 = 0, V9 = 0, V10 = 0), class = c("AsIs",
"data.frame"), row.names = 1L), B = structure(list(V1 = 0, V2 = 0,
V3 = 0, V4 = 0, V5 = 0, V6 = 0, V7 = 0, V8 = 0, V9 = 0, V10 = 0,
V11 = 0, V12 = 0, V13 = 0, V14 = -0.5, V15 = 0, V16 = 0,
V17 = 0, V18 = -0.5, V19 = 0, V20 = 0, V21 = 0, V22 = 0,
V23 = 0, V24 = 0, V25 = 0, V26 = 0, V27 = 0, V28 = 0, V29 = 0), class = c("AsIs",
"data.frame"), row.names = 1L)), class = "data.frame", row.names = c(NA,
-1L))
如果我rbind
这两个,我得到一个错误:
> rbind.data.frame( dn1, dn2 )
Error in `.rowNamesDF<-`(x, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique value when setting 'row.names': ‘1’
>
我怀疑它是由于其中的“A”和“B”结构,我可以rbind( dn1$A, dn2$A)
等等,但是因为dn1
和对于所有意图和目的dn2
都是有效的 1 行data.frames
,并且具有相同的名称和尺寸,所以我不应该感到奇怪能够对rbind
他们。
解决方案
我不知道实际原因,但我想这rbind
不适用于像您这样复杂的数据框。我想出了一个尽可能实现你想要的方法。
> rbind.list <- mapply(rbind, dn1, dn2)
> dn3 <- data.frame(rbind.list)
> dn3$A
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
# 1 0 0 0 0 0 0 0 -0.5 0 -0.5
# 2 0 0 0 0 0 0 0 0.0 0 0.0
> dn3$B
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21
# 1 0 0 0 0 0 -0.5 0 0 0 0 0 0 0 0.0 0 0 0 0.0 0 0 0
# 2 0 0 0 0 0 0.0 0 0 0 0 0 0 0 -0.5 0 0 0 -0.5 0 0 0
# V22 V23 V24 V25 V26 V27 V28 V29
# 1 0 0 0 0 0 0 0 0
# 2 0 0 0 0 0 0 0 0
mapply
等效但比您分别使用的rbind( dn1$A, dn2$A)
和更有效rbind( dn1$B, dn2$B)
。
推荐阅读
- c++ - 当 RCPP 程序无法正常工作时,有没有办法阻止 RGui 崩溃?
- github - 通过 Javascript ajax 请求将问题发布到 Github 存储库
- laravel -
在 laravel 5.6 和 vue.js 中不起作用 - azure - 如何强制 Azure 网站使用自定义域而不是 *.azurewebsites.com
- css - 为什么过渡计时功能不起作用?
- c# - 实体框架核心添加迁移失败
- python - 访问查询到 Python 脚本的转换
- mongodb - 如何将mongodb数据从本地复制到虚拟机?
- css - 使用量角器角度通过 css 绞盘查找元素未激活
- nativescript - 如何在 NativeScript 中检测 JAILBROKEN/ROOTED 设备?