我有以下数据框
df <- data.frame(A = c(0,100,5), B = c(0,100,10), C = c(0,100,25)
我使用此功能
for(i in c(1:3)))
{seq(df [1,i], df [2,i], df [3,i])
}
我需要存储输出,但到目前为止我只能使用
打印结果{y<-seq(df [1,i], df [2,i], df [3,i])
print(y)}
相反,我想将这些输出存储在列表中以获得类似
的内容[[1]]
[1] 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
[[2]]
[1] 0 10 20 30 40 50 60 70 80 90 100
[[3]]
[1] 0 25 50 30 100
答案 0 :(得分:3)
使用lapply
代替for
循环
> lapply(1:3, function(i) seq(df[1,i], df[2,i], df[3,i]))
[[1]]
[1] 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
[[2]]
[1] 0 10 20 30 40 50 60 70 80 90 100
[[3]]
[1] 0 25 50 75 100
答案 1 :(得分:1)
这里最好的解决方案是使用lapply作为@Jilber。
如果您想知道如何附加列表:
result = list()
for(i in c(1:3))
{
result[[i]]<- seq(df [1,i], df [2,i], df [3,i])
}
result
答案 2 :(得分:1)
lapply
是要走的路。这是另一种使用data.frame
只是列表的事实的方法。
lapply(df, function(x) do.call(seq,as.list(x)))
# $A
# [1] 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
#
# $B
# [1] 0 10 20 30 40 50 60 70 80 90 100
#
# $C
# [1] 0 25 50 75 100