【发布时间】:2020-07-26 12:19:47
【问题描述】:
我在一个列表中有许多大小相同的矩阵:
我将它们与Reduce and join 合并:
env.all <- Reduce(function(...) left_join(..., by = c('X1', 'X2')), dists.can)
但由于 data.frames 中所有可连接的列都被称为“值”,所以新的 data.frame 的名称很尴尬:
names(env.all)
[1] "X1" "X2" "value.x" "value.y" "value.x.x" "value.y.y" "value.x.x.x" "value.y.y.y"
[9] "value.x.x.x.x" "value.y.y.y.y" "value"
为了防止这种情况,我想用父母 data.frame 的名称重命名 dist.can 中的每一列 $value,例如。 dist.can$aridity$value 变为例如“dist.can$aridity$aridity”。
dists.can <- lapply(dists.can, function(x) {names(x$value) <- names(x);x})
但这失败了。它什么也不做。我怎样才能做到这一点?
玩具数据:
dist.can <- list(Name1=data.frame(X1=LETTERS[1:10], X2=letters[1:10], value=runif(10)),
Name2=data.frame(X1=LETTERS[1:10], X2=letters[1:10], value=runif(10)),
Name3=data.frame(X1=LETTERS[1:10], X2=letters[1:10], value=runif(10)))
【问题讨论】:
标签: r