将功能输出存储在R中的列表中

时间:2014-04-02 22:23:28

标签: r list function seq

我有以下数据框

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

3 个答案:

答案 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