r - R中“子集”函数的逻辑参数到底是什么?
问题描述
我正在通过《Learning R - Richard Cotton》一书学习 R,第 5 章:列表和数据框,我不明白这个示例给出,我有这个数据框和以下脚本:
(a_data_frame <- data.frame(
x = letters[1:5],
y = rnorm(5),
z = runif(5) > 0.5
))
x y z
1 a 0.6395739 FALSE
2 b -1.1645383 FALSE
3 c -1.3616093 FALSE
4 d 0.5658254 FALSE
5 e 0.4345538 FALSE
subset(a_data_frame, y > 0 | z, x) # what exactly mean y > 0 | z ?
我看了书说:
子集最多需要三个参数:子集的数据框,要包含的行条件的逻辑向量,以及要保留的列名向量
没有关于第二个逻辑参数的更多信息。
解决方案
这是一个棘手的例子,因为(a_data_frame, y > 0 | z, x)
第二个参数表示 y > 0 而“| z”表示z 列中的值为 True。
y>0 评估由 rnorm(5) 给出的值,您的值与书本不同,因为它们也是随机生成的“或”“|” 如果条件为 True,则选择列 z ,在您的情况下,所有值 False 并且您看不到发生了什么,但作为教学示例,如果我们更改z = rnorm(5)
而不是runif(5)>5
,您可以更好地理解此功能的工作原理.
(a_data_frame <- data.frame(
x = letters[1:5],
y = rnorm(5),
z = rnorm(5)
))
x y z
1 a -0.91016367 2.04917552
2 b 0.01591093 0.03070526
3 c 0.19146220 -0.42056236
4 d 1.07171934 1.31511485
5 e 1.14760483 -0.09855757
所以如果我们有 y<0 或 z<0 列的输出将是行 a,c,e
> subset(a_data_frame, y < 0 | z < 0, x)
x
1 a
3 c
5 e
> subset(a_data_frame, y < 0 & z<0, x)
[1] x
<0 rows> (or 0-length row.names) # there is no values for y<0 and z<0
> subset(a_data_frame, y < 0 & z, x) # True for row 2.
x
2 b
> subset(a_data_frame, y < 0 | z, x) # true for row 2 and row 4.
x
2 b
4 d
推荐阅读
- python - 对数刻度中的 Matplotlib 奇怪的垂直线
- reactjs - 当 ReactJs 中的 map() 数组时,Typescript 创建错误
- r - 根据与先前值的差异定义颜色 - 点和线
- php - 如何在 PHP 中实现各种行为?
- macos - 如何在mac os中构建一个可以将文件从主机复制到容器的docker镜像?
- sql - 如何从具有多个表的查询中创建不同的计数
- javascript - 我如何使用 Promise.all 使用此参数执行多个请求?
- java - 在anyRequest之后无法配置antMatchers?如何解决
- clojure - 使用“Clojure”的基本计算器
- python - ImportError 的原因:No module named requests