R中的子集函数没有按我希望的方式对

时间:2016-11-19 10:37:40

标签: r

我正在尝试根据物种RPKM值和dnds值对我的数据集进行子集化,这样对于每个物种,RPKM值的范围可以从0到170,而dnds值的范围可以从0.10到0.40。我已经使用了如下所示的子集函数。起初我尝试在一个子集函数中添加这些维度,但它无法正常工作。然后我把它分解了(如下图所示)。它似乎适用于RPKM,但我仍然得到大于0.40的dNdS值。 谁能告诉我这里我做错了什么。

这是我的代码:

subset_data <- subset(mammals, mammals$RPKM <= 170)

subset_data2 <- subset(subset_data,mammals$RPKM >= 0)

subset_data3 <- subset(subset_data2,mammals$dNdS >= 0.10)

subset_data4 <- subset(subset_data3,mammals$dNdS <= 0.40)

1 个答案:

答案 0 :(得分:0)

1)运行

str(mammals)

示例

> str(iris)
'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

检查变量RPKM&amp; dNdS类型。他们应该是&#34; num&#34;或&#34; int&#34;。

2)使用?base :: Logic

例如

> subset(iris, Sepal.Length>6&Sepal.Width<3&Petal.Length<5&Petal.Width<1.4)
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
59          6.6         2.9          4.6         1.3 versicolor
72          6.1         2.8          4.0         1.3 versicolor
74          6.1         2.8          4.7         1.2 versicolor
75          6.4         2.9          4.3         1.3 versicolor
88          6.3         2.3          4.4         1.3 versicolor
98          6.2         2.9          4.3         1.3 versicolor

在你的情况下

subset(mammals, mammals$RPKM <= 170 & mammals$RPKM >= 0 & mammals$dNdS >= 0.1 & mammals$dNdS <= 0dNdS.4)