我有一个重复的函数,每次使用apply / sapply / lapply更改参数。
非常好。
我想返回一个数据集,其中每一行包含该函数每次迭代中的两个(或更多)变量。
相反,我得到了不可用的列表。
do <-function(x){
a <- x+1
b <- x+2
cbind(a,b)
}
over <- [1:6]
final <- lapply(over, do)
有什么建议吗?
无需更改功能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
如果您想将当前形式的do
与lapply
一起使用,我们可以这样做
do.call(rbind.data.frame, lapply(over, do))
您也可以尝试
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