我正在通過《Learning R - Richard Cotton》第 5 章:列表和數據框這本書學習 R,但我不明白這個示例給出的內容,我有這個數據框和以下腳本:
(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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句