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