R:比较列表中的每个值是否为其他值

R:比较列表中的每个值是否为其他值,r,R,我不熟悉R。我有一个矩阵combine,我想知道某列的每个值是否大于0.05。我该怎么做?为什么第二行代码不起作用?9.65830710944783e-05小于0.05,但其逻辑值为真 > head(combine[,"rollingUSGG5Y_significance"], 30) [1] NA NA NA NA

我不熟悉R。我有一个矩阵combine,我想知道某列的每个值是否大于0.05。我该怎么做?为什么第二行代码不起作用?9.65830710944783e-05小于0.05,但其逻辑值为真

> head(combine[,"rollingUSGG5Y_significance"], 30)
 [1] NA                     NA                     NA                     NA                    
 [5] NA                     NA                     NA                     NA                    
 [9] NA                     "0.000340501400361469" NA                     NA                    
[13] NA                     NA                     "0.0180102687712968"   NA                    
[17] NA                     NA                     NA                     "0.00392196741941212" 
[21] NA                     NA                     NA                     NA                    
[25] "9.65830710944783e-05" NA                     NA                     NA                    
[29] NA                     "3.23767237214935e-07"
> head(combine[,"rollingUSGG5Y_significance"] > 0.05,30)
 [1]    NA    NA    NA    NA    NA    NA    NA    NA    NA FALSE    NA    NA    NA    NA FALSE    NA    NA    NA
[19]    NA FALSE    NA    NA    NA    NA  TRUE    NA    NA    NA    NA  TRUE

当与数值进行比较时,字符列的计算结果将与数值列的计算结果不同。正如@onyanbu在评论中指出的,请确保您将数字作为数字进行评估

下面演示如何在每种情况下获得不同的布尔值:

set.seed(123)

n首先确保它们是数字的:
head(如.numeric(组合[,“rollingugg5y\u重要性])>0.05,30)
有效。非常感谢。这是一个很好的答案!!另外,您可能还应该补充一点,数字通常被隐式强制为字符。例如
3==“3”
应返回TRUE,而3>“2.5”为TRUE,但3e-1>“3”应返回FALSE,但由于读取的字符为3e-1而不是0.3,因此返回TRUE。