“>”时会发生什么适用于R中的字符

时间:2015-12-03 02:53:21

标签: r

我有一个数据集如下:

  state                substance sample.result
1  <NA> MAXIMUM NORMALIZED DP/DT           8.5
2  <NA>         Moisture Content            11
3    OH  Lead, Inorganic (as Pb)     0.0485974
4    OH  Lead, Inorganic (as Pb)     0.0292245
5    OH  Lead, Inorganic (as Pb)     0.0620832
6    OH  Lead, Inorganic (as Pb)             0

但是sample.result属于字符类型,我想知道如果我使用以下代码进行子集将会发生什么:

health = subset(data, sample.result >0)

这会自动将字符值转换为适当的数值吗?

2 个答案:

答案 0 :(得分:2)

强迫与你的希望相反。强迫性格&#34;发生并且词汇顺序与操作系统有关,因此建议的比较结果将取决于是否&#34; - &#34;是在#34; 0&#34;之前或之后在你的机器上。

请参阅:https://stat.ethz.ch/R-manual/R-devel/library/base/html/Comparison.html

答案 1 :(得分:1)

这取决于列的类。如果sample.result列是一个因素,则无效。

上述注释似乎表明R是否将“-1.5”评估为大于或小于零存在一些模糊性,因此如果是类的话,您应该避免在列上使用> character

如果该列属于numeric类,则可以。

您可以使用class(data$sample.result)

检查列的类

然而,最好使用以下方法将sample.result显式转换为数字:

health  = subset(data, as.numeric(as.character(sample.result)))

额外的as.character确保如果它是previousl.y的一个因素,那么它就会被正确处理(尝试将因子转换为只有as.numeric的数字以查看原因)。