r - 将文本粘贴到 dplyr mutate 中

标签 r dplyr tidyverse

我希望能够传递一串变量来滞后到 dplyr mutate 函数,但遇到了一些麻烦。例如,这工作正常:

 text <- "lag(depth)"
 diamonds %>% mutate_(text)

但这不会并给出错误:

 text <- "lag(depth), lag(table)"
 diamonds %>% mutate_(text)

Error in parse(text = x) : <text>:1:11: unexpected ','
1: lag(depth),

这感觉应该是可能的。任何帮助将不胜感激。

最佳答案

您必须连接文本:

text <- c("lag(depth)", "lag(table)")

然后使用 .dots 解析您的文本:

library(dplyr)

diamonds %>% 
  mutate_(.dots = text)

## A tibble: 53,940 x 12
#   carat cut     color clarity depth table price     x     y     z `lag(depth)`
#   <dbl> <ord>   <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>        <dbl>
# 1 0.23  Ideal   E     SI2      61.5    55   326  3.95  3.98  2.43         NA
# 2 0.21  Premium E     SI1      59.8    61   326  3.89  3.84  2.31         61.5
# 3 0.23  Good    E     VS1      56.9    65   327  4.05  4.07  2.31         59.8
# 4 0.290 Premium I     VS2      62.4    58   334  4.2   4.23  2.63         56.9
# 5 0.31  Good    J     SI2      63.3    58   335  4.34  4.35  2.75         62.4
# 6 0.24  Very G~ J     VVS2     62.8    57   336  3.94  3.96  2.48         63.3
# 7 0.24  Very G~ I     VVS1     62.3    57   336  3.95  3.98  2.47         62.8
# 8 0.26  Very G~ H     SI1      61.9    55   337  4.07  4.11  2.53         62.3
# 9 0.22  Fair    E     VS2      65.1    61   337  3.87  3.78  2.49         61.9
#10 0.23  Very G~ H     VS1      59.4    61   338  4     4.05  2.39         65.1
## ... with 53,930 more rows, and 1 more variable: `lag(table)` <dbl>

关于r - 将文本粘贴到 dplyr mutate 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50700985/

相关文章:

r - Plotly "drawopenpath"成品线颜色与绘图过程中的颜色

r - dplyr 重命名 - 错误 : `new_name` = old_name must be a symbol or a string, 不是公式

r - 通过R中的dplyr将特定的列对收集到行中

r - 如何从多个data.frame中获取特定列并将其保存为R中的新data.frame?

r - 扫帚::使用面板混合模型增强速度太慢

r - 如何在R中 'subset'命名向量?

regex - 替代 for() 循环以将非常大的数据框列条目与非常大的向量列表进行比较

r - 为什么knitr无法找到framed.sty或kpsewhich?

r - dplyr array() 适用于 c() 内的单个变量,但在函数内部求值时不适用于 c() 内的多个变量

R dplyr - 按名称模式重新排列列