如何在 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.