lapply子集化为数据帧列表

时间:2014-06-17 11:02:36

标签: r logic subset lapply

我有一个类似于

的数据框列表
$ list
$gnl_4935
          V1     V2    V3               V4    V5  
99  gnl_4935 -63.23  -1.4 1.05263157894737 MS_run03
100 gnl_4935 -61.89 -1.06             1.25 MS_run03
101 gnl_4935 -51.29 -1.31  1.0989010989011 MS_run03
102 gnl_4935 -39.09 -1.05 1.44927536231884 MS_run03


$gnl_4990
          V1     V2    V3               V4   V5      
99  gnl_4897 -45.82  -1.4 1.05263157894737 MS_run03
100 gnl_4897 -33.85 -1.06             1.25 MS_run03
101 gnl_4897 -27.14 -1.31  1.0989010989011 MS_run03


$gnl_5098
       V1     V2    V3           V4         V5     
99  PSE_4 -50.49  -1.4 1.05263157894737 MS_run03
100 PSE_4 -39.48 -1.06             1.25 MS_run03

我想应用一个对不同列执行不同操作的函数。因此,在函数I中,数据帧的子集如下所述:

> Prop<- function (data, clmn)
+                 {ratio<-data[ ,clmn]
+                    complete <- c(ratio[ratio!=0],unique(ratio[ratio==0]))}

我想要第2列的子集:

lapply(list, Prop, 2)

我希望:

$gnl_4935
-63.23 -61.89 -51.29 -39.09 

$gnl_4990
-45.82 -33.85 -27.14 

$gnl_5098
-50.49 -39.48

但我明白了:

$gnl_4935
99 97 81 49

$gnl_4990
67 38 19 

$gnl_5098
76 52

当我只测试子集时:

ratio<-data[ ,clmn]

我获得了以下结果:

$gnl_4935
[1] -63.23 -61.89 -51.29 -39.09
106 Levels: -20.4 -21.1 -21.23 -21.37 -21.93 -22.24 -22.52 -22.56 -24.05 -24.69 -24.83 -24.85 -25.25 -25.8 -26.44 ... -83.33


$gnl_4990
[1] -45.82 -33.85 -27.4 
106 Levels: -20.4 -21.1 -21.23 -21.37 -21.93 -22.24 -22.52 -22.56 -24.05 -24.69 -24.83 -24.85 -25.25 -25.8 -26.44 ... -83.33


$gnl_5098
[1] -50.49 -39.48
106 Levels: -20.4 -21.1 -21.23 -21.37 -21.93 -22.24 -22.52 -22.56 -24.05 -24.69 -24.83 -24.85 -25.25 -25.8 -26.44 ... -83.33

因此,我真的不明白全功能的数量来自哪里。 有人有解释吗?

非常感谢

0 个答案:

没有答案