说,我有一个向量和一个带有一个参数的函数,它返回一个data.frame。 我想将函数应用于向量的每个元素,并将结果组合到一个大数据框架。
我已经使用lapply和rbind获得了下面的工作命令。但它看起来有点“不自然”。有更好,更清晰的方式吗? 我对plyr有一些想法,但我想避免使用plyr,因为我想使用dplyr。
my_vector <- c(1,2,3)
my_function <- function(a){
unif <- runif(a)
norm <- rnorm(a)
return(data.frame(unif=unif, norm=norm))
}
as.data.frame(do.call(rbind,(lapply(my_vector, my_function))))
答案 0 :(得分:11)
尝试
library(dplyr)
lapply(my_vector, my_function) %>% bind_rows()
答案 1 :(得分:2)
您还可以使用data.table
&#39; rbindlist
,如下所示:
require(data.table)
df <- setDF(rbindlist(lapply(my_vector, my_function)))
如果没有setDF
rbindlist,则会返回data.table
而不是data.frame
答案 2 :(得分:0)
嵌套列表的解决方案:
result = bind_rows(lapply(list1, function(x) {
bind_rows(lapply(list2, function(y) {
lapply(list3, function(z) {
read.delim(paste0(x, "_", y, "_", z))
})
}))
}))