对列表中每个元素的多个列应用计算

时间:2013-08-26 10:36:08

标签: r list for-loop

我有一个由23个元素组成的列表,每个元素有69行和13列。我需要对列表中的每个元素应用多列的计算。

作为一个简单的例子,我的列表如下所示:

>list
>$`1` 
>       a       b     c 
>1    2.1    1.4    3.4 
>2    4.4    2.6    5.5 
>3    2.6    0.4    3.0 
... 

>$`2` 
>      a       b        c 
>70    5.1    4.9    5.1 
>71    4.4    7.6    8.5 
>72    2.8    3.5    6.8 
... 

我希望做的是z = (a-b) / c 每个元素($ 1,$ 2 ...,$ 23

我尝试了以下代码:

  

for(i in 1:23){
  z =(list [[i]] $ a - list [[i]] $ b)/ list [[i]] $ c   }

它只给了我49个值,而不是1566个值。

任何人都知道我的代码有什么问题并且能够纠正它吗? 非常感谢你!

2 个答案:

答案 0 :(得分:2)

您可以使用功能lapply()执行此操作。下面的示例假设在所有数据框列中具有相同的名称。

ll<-list(data.frame(a=1:3,b=4:6,c=7:9),
         data.frame(a=1:3,b=6:4,c=7:9),
         data.frame(a=1:3,b=4:6,c=9:7))

lapply(ll, with, (a-b)/c)

答案 1 :(得分:0)

使用@DidzisElferts回答,你可以使用这个

lapply(ll, within, z <- (a-b)/c)

z添加为每个数据框的新列。