gpt4 book ai didi

r - 在没有公共(public)列的情况下水平组合数据框

转载 作者:行者123 更新时间:2023-12-02 01:31:34 25 4
gpt4 key购买 nike

我有一个非常简单的问题,但我是 R 的新手。我有 300 多个数据帧,例如:

DF1 <- data.frame(replicate(5,sample(1:10,5,rep=TRUE)))
DF2 <- data.frame(replicate(5,sample(11:20,8,rep=TRUE)))
DF3 <- data.frame(replicate(5,sample(21:30,3,rep=TRUE)))

我列出了它们:

list <- lapply(paste0('DF',seq(1,3)), get)

我的目标是组合这些数据框并并排打印。我无法使用函数列表合并、cbind 的原因是我不想根据任何列作为引用进行组合。

        [DF][1]

现在,当我单独传递 DF 时,来自 rowr 包的 cbind.fill() 完成了这项工作。但是我如何将列表传递给它呢?当我执行 cbind.fill(list) 时它不起作用

搜索后我找到了 merge_recurse(list),但它没有完成这项工作。提前致谢

最佳答案

我们可以使用do.call

library(rowr)
res1 <- do.call(cbind.fill, lst)
identical(res1, cbind.fill(DF1, DF2, DF3))
#[1] TRUE

最好不要用函数名来命名对象,即我们可以将其命名为“lst”而不是“list”。此外,对于多个对象,我们可以使用 mget 而不是 'get'

lst <- mget(paste0('DF', 1:3))

这也可以在没有任何包的情况下完成。我们可以通过数据集 list 中的最大行复制行,然后 cbind

do.call(cbind, lapply(lst, function(x) x[rep(1:nrow(x), 
length.out= max(sapply(lst, nrow))),]))

关于r - 在没有公共(public)列的情况下水平组合数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com