我正在试验管道和磁磁仪的包装。虽然它似乎有点容易理解,但我很难理解如何用管道编写条件子集。
对于dataset,您可以使用“filter”函数和其他函数,但是对于向量(至少对我来说)它变得不清楚了。
例如,如果我希望子集值大于2,那么我应该如何做呢?我知道有假名,但他们昨天做了些奇怪的事。
我想了解如何使用[**and** <**for示例编写管道,但也使用别名。**能给我提供一些示例并比较这两种语法吗?喜欢
1)对向量进行细分并检索大于/低于2的值
2)如何组合两个逻辑表达式(我通常使用的是&或.)
Num1 <-
DataSet$myvariable %>%
strsplit(split = " ") %>%
lengths() %>% is_less_than(2) %>% #subset?如何提取值时,我有我的真假?
非常感谢
发布于 2017-11-16 13:38:23
我想我找到了我问题的部分答案。
首先用于语法:
%>% is_less_than(2) #would be equivalent to
%>% `<`(2) # I didn't know about the parenthesis here如果有一个关于magrittr的更详细的文档和许多例子,我很乐意知道它。
第二,关于子集,可以这样写成:
AssignData <- Vector %>%
purrr::keep(., `<`(., 2)) 以及进一步
AssignData <- DATASET %$% SOME OPERATIONS THAT GIVES A VECTOR (split?) %>%
`<`(2) %>%
which %>%
DATASET[.,]根据向量中的某些准则从数据集中提取某些内容。
发布于 2017-11-16 19:34:20
若要用条件对向量进行子集,可以执行以下操作:
library(magrittr)
1:10 %>% `<`(5) %>% `[`(1:10,.)或者:
1:10 %>% `<`(5) %>% (1:10)[.]
# [1] 1 2 3 4这些措施相当于:
(1:10)[1:10 < 5]我之所以把.放在1:10之后,在[(1:10,.)中,但将它(隐式地)放在<(5)中的5之前,是因为对于后者,我是在向量1:10中喂食,而对于前者,我是在1:10 < 5的条件下进食。
若要从向量中用条件子集数据集,请执行以下操作:
mtcars$cyl %>% `<`(5) %>% `[`(mtcars, ., )或者:
mtcars$cyl %>% `<`(5) %>% mtcars[.,] 这些措施相当于:
mtcars[mtcars$cyl < 5,][(mtcar,. )中的额外逗号是必需的,因为您正在设置向量的数据整数,就像(1:10)[1:10 < 5]和mtcars[mtcars$cyl < 5,]之间的区别一样。
结果:
mpg cyl disp hp drat wt qsec vs am gear carb
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2https://stackoverflow.com/questions/47326382
复制相似问题