将每个函数调用使用多个输出置于R中数据框中的一行中

问题描述 投票:0回答:2

我有一个重复的函数,每次使用apply / sapply / lapply更改参数。

非常好。

我想返回一个数据集,其中每一行包含该函数每次迭代中的两个(或更多)变量。

相反,我得到了不可用的列表。

do <-function(x){
  a <- x+1
  b <- x+2
  cbind(a,b)
}

over <- [1:6]

final <- lapply(over, do)

有什么建议吗?

r loops lapply
2个回答
0
投票

无需更改功能do,就可以使用sapply进行移调。

data.frame(t(sapply(over, do)))

#  X1 X2
#1  2  3
#2  3  4
#3  4  5
#4  5  6
#5  6  7
#6  7  8

如果您想将当前形式的dolapply一起使用,我们可以这样做

do.call(rbind.data.frame, lapply(over, do))

0
投票

您也可以尝试

as.data.frame(Reduce(rbind, final))
#   a b
# 1 2 3
# 2 3 4
# 3 4 5
# 4 5 6
# 5 6 7
# 6 7 8

请参阅?Reduce?rbind了解有关它们将执行的操作的信息。您也可以将final表达式修改为

final <- as.data.frame(Reduce(rbind, lapply(over, do)))
#final
#   a b
# 1 2 3
# 2 3 4
# 3 4 5
# 4 5 6
# 5 6 7
# 6 7 8
© www.soinside.com 2019 - 2024. All rights reserved.