R lappy子集到数据帧列表

R lappy子集到数据帧列表,r,logic,subset,lapply,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

我有一个这样的数据帧列表

$ 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]))}
我希望:

$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]
因此,我真的不明白完整函数的数字从何而来。 有人有解释吗


非常感谢

您确定比率是数值级的吗?试着把第一行改成比率谢谢你的回答。我认为该分录有效,请参考编辑后的问题。但是,当我尝试将逻辑条件应用于子集合对象时,会发生一些我无法理解的事情。我尝试了你的建议,但我得到了同样的问题。我肯定我忽略了一些琐碎的事情。我认为问题是你有一个因子,而不是数字向量,正如你从106个层次上看到的:。。。在输出中。因此,您得到的是因子位置,而不是数值。奇怪的是as.numeric不能解决这个问题。。。请您使用我之前评论中的as.numeric,然后用输出打印比率更新帖子。您必须使用as.numericas.characterx将因子转换为数字。
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