R. 仅显示布尔表达式的 TRUE 值?

R. Display only TRUE values from a boolean expression?

提问人:Benzilla 提问时间:2/8/2022 最后编辑:benson23Benzilla 更新时间:2/13/2022 访问量:2970

问:

数据科学专业的学生在这里。R 的新手,在我的第一门课程中。我花了太多时间试图弄清楚这个练习,所以我想我会问这里的人。

我创建了一个由 4 个矩阵构建的数据帧,标题为 bee_numbers_data_2:

buff_tail garden_bee red_tail honeybee carder_bee
    10          8       18       12          8
     1          3        9       13         27
    37         19        1       16          6
     5          6        2        9         32
    12          4        4       10         23

该练习要求我们只显示蜜蜂数量 >= 10。

因此,我创建了一个布尔表达式来显示 TRUE FALSE 语句:

bee_numbers_data_2$honeybee>=10

其中返回:

[1]  TRUE  TRUE  TRUE FALSE  TRUE

但是,我想显示 true 语句的 VALUES 列表,而不是 TRUE FALSE 语句的列表。

我一直在翻阅我的教科书和互联网,试图弄清楚这个简单的问题,所以任何帮助将不胜感激。非常感谢。

r 逻辑 表达式 布尔运算

评论

0赞 dww 2/8/2022
看一看?which
0赞 danlooo 2/8/2022
看看 dplyr.tidyverse.orgr4ds.had.co.nz
0赞 dash2 2/8/2022
阅读 R 子集。特别。?"["

答:

1赞 dww 2/8/2022 #1

虽然这是一个相当简单的问题,在大多数关于 R 的介绍性文章中都有涉及,但我在 SO 上找不到重复的问题,所以在这里似乎值得回答。

让我们来分解一下。正如您已经展示的,我们可以使用布尔表达式来生成布尔值的向量:

bee_numbers_data_2 = data.frame(honeybee=c(12,13,16,9,10)) 
bee_numbers_data_2$honeybee >= 10
# [1]  TRUE  TRUE  TRUE FALSE  TRUE

如果我们想知道哪些是正确的,我们可以使用基本的 R 函数:which

which(bee_numbers_data_2$honeybee >= 10)
# [1] 1 2 3 5

如果我们想知道与这些仓位指数对应的原始值,我们可以使用这些指数来子集原始数据,使用[

bee_numbers_data_2$honeybee[which(bee_numbers_data_2$honeybee >= 10)]
# [1] 12 13 16 10

或者,等效地,更简单一点,我们可以直接使用布尔值进行子集:

bee_numbers_data_2$honeybee[bee_numbers_data_2$honeybee >= 10]

请注意,随着对 R 的了解,您会发现还有一些更高级的方法来筛选和子集数据,例如 packages 和 .但是,最好先了解如何使用基本 R,如上所示。data.tabledplyr

评论

0赞 Benzilla 2/8/2022
非常感谢。我知道这是一个我错过的简单功能。另一个问题。如果我想使用布尔值对 2 列中的数据进行子集化,我将如何实现?假设我想知道来自蜜蜂和 buff 尾柱的哪些数据是 >= 10。我试图在“which”函数内用逗号分隔这两个命令,但这不起作用。
0赞 dww 2/8/2022
这里不适合学习有关 R 基础知识的扩展教程。我建议您完成众多可用课程和文本之一。