提问人:Benzilla 提问时间:2/8/2022 最后编辑:benson23Benzilla 更新时间:2/13/2022 访问量:2970
R. 仅显示布尔表达式的 TRUE 值?
R. Display only TRUE values from a boolean expression?
问:
数据科学专业的学生在这里。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 语句的列表。
我一直在翻阅我的教科书和互联网,试图弄清楚这个简单的问题,所以任何帮助将不胜感激。非常感谢。
答:
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.table
dplyr
评论
0赞
Benzilla
2/8/2022
非常感谢。我知道这是一个我错过的简单功能。另一个问题。如果我想使用布尔值对 2 列中的数据进行子集化,我将如何实现?假设我想知道来自蜜蜂和 buff 尾柱的哪些数据是 >= 10。我试图在“which”函数内用逗号分隔这两个命令,但这不起作用。
0赞
dww
2/8/2022
这里不适合学习有关 R 基础知识的扩展教程。我建议您完成众多可用课程和文本之一。
上一个:python:如何理解布尔表达式:a 和 b 不在列表中
下一个:SQL 括号
评论
?which
?"["