如何在 unnest_tokens 中使用变量值作为列名
How to use a variable value as column name in unnest_tokens
我有以下代码:
df <- tibble(c1 = 1:3, c2 = c("This is text1",
"This is text2",
"This is text3"))
#This works ok!
unnest_tokens(df, input=c2,
output=word)
#This works ok!
unnest_tokens(df, input="c2",
output=word)
#Why this one doesn't work?
a = "c2"
unnest_tokens(df, input=a,
output=word)
如上所示,unnest_tokens 本身接受 c2(作为变量的列名)和 "c2"(作为字符串的列名)。
但我希望能够使用第三个选项。传递 "c2" 作为变量的值,比方说 a 而不是使用值作为列名。
这是否可以在 R 的 tidytext 包函数中完成unnest_tokens?
它与 tidyverse 中的引用有关。用 !!
试试这个。
a = "c2"
unnest_tokens(df, input=!!a,
output=word)
# A tibble: 9 x 2
c1 word
<int> <chr>
1 1 this
2 1 is
3 1 text1
4 2 this
5 2 is
6 2 text2
7 3 this
8 3 is
9 3 text3
所有这些的一个很好的资源是 Hadley Wickham's "Advanced R"。
19.4.1 Unquoting one argument
Use !!
to unquote a single argument in a function call.
我有以下代码:
df <- tibble(c1 = 1:3, c2 = c("This is text1",
"This is text2",
"This is text3"))
#This works ok!
unnest_tokens(df, input=c2,
output=word)
#This works ok!
unnest_tokens(df, input="c2",
output=word)
#Why this one doesn't work?
a = "c2"
unnest_tokens(df, input=a,
output=word)
如上所示,unnest_tokens 本身接受 c2(作为变量的列名)和 "c2"(作为字符串的列名)。
但我希望能够使用第三个选项。传递 "c2" 作为变量的值,比方说 a 而不是使用值作为列名。
这是否可以在 R 的 tidytext 包函数中完成unnest_tokens?
它与 tidyverse 中的引用有关。用 !!
试试这个。
a = "c2"
unnest_tokens(df, input=!!a,
output=word)
# A tibble: 9 x 2
c1 word
<int> <chr>
1 1 this
2 1 is
3 1 text1
4 2 this
5 2 is
6 2 text2
7 3 this
8 3 is
9 3 text3
所有这些的一个很好的资源是 Hadley Wickham's "Advanced R"。
19.4.1 Unquoting one argument
Use
!!
to unquote a single argument in a function call.