无法理解 r 中 tidyeavl 中的 Curly Curly
can not understand Curly Curly in tidyeavl in r
我用{{}}
在r中建立了一个自函数
我不明白为什么会这样。
test.data = data.frame(pm10 = 1:5)
test.data
new.col.name = 'lag_pm10'
col = 'pm10'
test.data %>% # error
mutate({{new.col.name}} := lag({{col}}, 2))
test.data %>% # works
mutate({{new.col.name}} := lag(get(col), 2))
在我看来,当我将 new.col.name
和 col
放入 {{}}
时,它们会被解析。
但情况是 {{new.col.name}}
工作正常并且 {{col}}
没有 return 我预期的那样。
然后我把 {{col}}
改成 get(col)
就可以了。
我不知道为什么。
在我看来,这两个对象(new.col.name
和col
)的值都是字符。
我用{{}}
到new.col.name
和col
应该是一样的。
我想也许 {{new.col.name}}
成为变量名而 {{col}}
成为 mutate()
中的参数。
如果是这样的话。
我可以说我可以对任何变量名称使用 {{}}
对所有参数使用 get()
吗?
您可以将其编写为传递未加引号的变量的函数,而不是使用 curly-curly {{
运算符的字符串,如下所示:
my_function <- function(test.data, new.col.name, col) {
test.data %>% # error
mutate({{new.col.name}} := lag({{col}}, 2))
}
my_function(test.data, lag_pm10, pm10)
输出:
pm10 lag_pm10
1 1 NA
2 2 NA
3 3 1
4 4 2
5 5 3
我用{{}}
在r中建立了一个自函数
我不明白为什么会这样。
test.data = data.frame(pm10 = 1:5)
test.data
new.col.name = 'lag_pm10'
col = 'pm10'
test.data %>% # error
mutate({{new.col.name}} := lag({{col}}, 2))
test.data %>% # works
mutate({{new.col.name}} := lag(get(col), 2))
在我看来,当我将 new.col.name
和 col
放入 {{}}
时,它们会被解析。
但情况是 {{new.col.name}}
工作正常并且 {{col}}
没有 return 我预期的那样。
然后我把 {{col}}
改成 get(col)
就可以了。
我不知道为什么。
在我看来,这两个对象(new.col.name
和col
)的值都是字符。
我用{{}}
到new.col.name
和col
应该是一样的。
我想也许 {{new.col.name}}
成为变量名而 {{col}}
成为 mutate()
中的参数。
如果是这样的话。
我可以说我可以对任何变量名称使用 {{}}
对所有参数使用 get()
吗?
您可以将其编写为传递未加引号的变量的函数,而不是使用 curly-curly {{
运算符的字符串,如下所示:
my_function <- function(test.data, new.col.name, col) {
test.data %>% # error
mutate({{new.col.name}} := lag({{col}}, 2))
}
my_function(test.data, lag_pm10, pm10)
输出:
pm10 lag_pm10
1 1 NA
2 2 NA
3 3 1
4 4 2
5 5 3