首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解管道和magrittr语法

理解管道和magrittr语法
EN

Stack Overflow用户
提问于 2017-11-16 09:48:45
回答 2查看 230关注 0票数 2

我正在试验管道和磁磁仪的包装。虽然它似乎有点容易理解,但我很难理解如何用管道编写条件子集。

对于dataset,您可以使用“filter”函数和其他函数,但是对于向量(至少对我来说)它变得不清楚了。

例如,如果我希望子集值大于2,那么我应该如何做呢?我知道有假名,但他们昨天做了些奇怪的事。

我想了解如何使用[**and** <**for示例编写管道,但也使用别名。**能给我提供一些示例并比较这两种语法吗?喜欢

1)对向量进行细分并检索大于/低于2的值

2)如何组合两个逻辑表达式(我通常使用的是&或.)

代码语言:javascript
复制
Num1 <- 
DataSet$myvariable %>% 
strsplit(split = " ") %>% 
lengths() %>% is_less_than(2) %>% #subset?

如何提取值时,我有我的真假?

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2017-11-16 13:38:23

我想我找到了我问题的部分答案。

首先用于语法:

代码语言:javascript
复制
%>% is_less_than(2) #would be equivalent to
%>% `<`(2) # I didn't know about the parenthesis here

如果有一个关于magrittr的更详细的文档和许多例子,我很乐意知道它。

第二,关于子集,可以这样写成:

代码语言:javascript
复制
AssignData <- Vector %>%
purrr::keep(., `<`(., 2)) 

以及进一步

代码语言:javascript
复制
AssignData <- DATASET %$% SOME OPERATIONS THAT GIVES A VECTOR (split?) %>%
`<`(2) %>% 
which %>%
DATASET[.,]

根据向量中的某些准则从数据集中提取某些内容。

票数 0
EN

Stack Overflow用户

发布于 2017-11-16 19:34:20

若要用条件对向量进行子集,可以执行以下操作:

代码语言:javascript
复制
library(magrittr)

1:10 %>%  `<`(5) %>%  `[`(1:10,.)

或者:

代码语言:javascript
复制
1:10 %>% `<`(5) %>% (1:10)[.]
# [1] 1 2 3 4

这些措施相当于:

代码语言:javascript
复制
(1:10)[1:10 < 5]

我之所以把.放在1:10之后,在[(1:10,.)中,但将它(隐式地)放在<(5)中的5之前,是因为对于后者,我是在向量1:10中喂食,而对于前者,我是在1:10 < 5的条件下进食。

若要从向量中用条件子集数据集,请执行以下操作:

代码语言:javascript
复制
mtcars$cyl %>% `<`(5) %>% `[`(mtcars, ., )

或者:

代码语言:javascript
复制
mtcars$cyl %>% `<`(5) %>% mtcars[.,] 

这些措施相当于:

代码语言:javascript
复制
mtcars[mtcars$cyl < 5,]

[(mtcar,. )中的额外逗号是必需的,因为您正在设置向量的数据整数,就像(1:10)[1:10 < 5]mtcars[mtcars$cyl < 5,]之间的区别一样。

结果:

代码语言:javascript
复制
                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    2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47326382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档