r - dplyr:使用链接传递变量

标签 r dplyr chain stringr

我是 dplyr 的新手,无法弄清楚如何控制变量通过链接 (%>%) 命令。简单的示例:str_sub 函数采用三个参数 - 第一个参数通过 %>% 传递,但如何获取最后两个参数? :

library(stringr)
library(dplyr)
df <- data.frame(V1 = c("ABBEDHH", "DEFGH", "EFGF", "EEFD"), 
                 V2=c(4, 2, 1, 1), V3=c(5, 2, 2, 1), stringsAsFactors=FALSE)

在基础 R 中我可以这样做:

with(df, str_sub(V1, V2, V3))

并得到:

## [1] "ED" "E"  "EF" "E" 

如何链接这个? - 我尝试过:

df %>% str_sub(V1, V2, V3) # Here V3 is unused arg since V1 is treated as 2nd arg

df %>% select(V1) %>% str_sub(V2, V3) # Here V2 and V3 are not recognized

最佳答案

您可以执行以下操作:

library(dplyr)
library(stringr)
library(lazyeval)

df %>% mutate(new = str_sub(V1, V2, V3))
#       V1 V2 V3 new
#1 ABBEDHH  4  5  ED
#2   DEFGH  2  2   E
#3    EFGF  1  2  EF
#4    EEFD  1  1   E

请注意,dplyr 是为处理 data.frame 而设计的,因此输入和输出应该是 data.frame,而不是原子向量。

关于r - dplyr:使用链接传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715455/

相关文章:

r - 冲积图中组之间的不对称距离

r - 使用R(rugarch和fGarch包)的GARCH模型中参数估计的不同意义

r - knitr 和 UTF8 编码

r - 当第一次观察是 na 时,使用 na.locf 传递最后一个值并忽略第一行

python - 将上下文管理器的动态可迭代链接到单个 with 语句

stream - pipe()将如何在节点js中执行读写操作?

r - R中通过汽车包绘制三维散点图

r - Bind_rows_(x, .id) 中的错误 : Column can't be converted from factor to numeric

r - 使用 sf 创建表示子组边界框的多边形

r - 在 dplyr 链中按升序排列列名称