在自定义函数中包含额外的(ellipsis/dot 点)参数
Include extra (ellipsis/dot dot dot) arguments within custom function
我正在做一个关于文本挖掘的项目,因此我想编写一个小函数来计算文本中不同标记的数量。标记化是由函数 tidytext::unnest_token
完成的,它基本上是 tokenizers::tokenize_ngrams
与管道一起使用的包装器。我目前的做法如下:
count_tokens <- function(data,output,token="words", ...){
data %>%
select(textcolumn) %>%
tidytext::unnest_tokens(tbl=output, input=textcolumn, ...) %>%
n_distinct()
}
只要我使用来自 tidytext::unnest_token
的参数,例如 to_lower
或 drop
,它就可以正常工作(即使使用 ...
)。
count_tokens(data, word, to_lower = FALSE)
工作正常!
现在,tidytext::unnest_token
的文档指出 ...
也可以用作传递给分词器的 额外参数,例如 strip_punct
用于“单词”和“tweets”,n
和 k
用于“ngrams”和“skip_ngrams”,(...)。 但是,如果我包含参数 n
从我的函数中的省略号参数,它崩溃了。
count_tokens(data, ngram, token = "ngrams", to_lower = FALSE, n = 10)
显示以下错误消息:
Error in tf(col, lowercase = to_lower, ...) : unused argument (n = 10)
有人可以指出正确的方向,甚至可以告诉我需要如何调整我的代码吗?
首先,您的示例似乎无效。
对我来说,更新后的功能可以正常工作。
library(dplyr)
library(tidytext)
library(janeaustenr)
count_tokens <- function(data,output,token="words", ...){
d %>%
select(txt) %>%
tidytext::unnest_tokens(output, input="txt", token = token, ...) %>%
n_distinct()
}
d <- tibble(txt = prideprejudice)
count_tokens(d, "word", to_lower = FALSE)
#> [1] 6915
count_tokens(d, "ngram", token = "ngrams", to_lower = FALSE, n = 8)
#> [1] 122189
count_tokens(d, "ngram", token = "ngrams", to_lower = FALSE, n = 5)
#> [1] 121599
count_tokens(d, "ngram", token = "ngrams", to_lower = FALSE, n = 3)
#> [1] 104664
由 reprex package (v0.3.0)
创建于 2021-02-03
我正在做一个关于文本挖掘的项目,因此我想编写一个小函数来计算文本中不同标记的数量。标记化是由函数 tidytext::unnest_token
完成的,它基本上是 tokenizers::tokenize_ngrams
与管道一起使用的包装器。我目前的做法如下:
count_tokens <- function(data,output,token="words", ...){
data %>%
select(textcolumn) %>%
tidytext::unnest_tokens(tbl=output, input=textcolumn, ...) %>%
n_distinct()
}
只要我使用来自 tidytext::unnest_token
的参数,例如 to_lower
或 drop
,它就可以正常工作(即使使用 ...
)。
count_tokens(data, word, to_lower = FALSE)
工作正常!
现在,tidytext::unnest_token
的文档指出 ...
也可以用作传递给分词器的 额外参数,例如 strip_punct
用于“单词”和“tweets”,n
和 k
用于“ngrams”和“skip_ngrams”,(...)。 但是,如果我包含参数 n
从我的函数中的省略号参数,它崩溃了。
count_tokens(data, ngram, token = "ngrams", to_lower = FALSE, n = 10)
显示以下错误消息:
Error in tf(col, lowercase = to_lower, ...) : unused argument (n = 10)
有人可以指出正确的方向,甚至可以告诉我需要如何调整我的代码吗?
首先,您的示例似乎无效。 对我来说,更新后的功能可以正常工作。
library(dplyr)
library(tidytext)
library(janeaustenr)
count_tokens <- function(data,output,token="words", ...){
d %>%
select(txt) %>%
tidytext::unnest_tokens(output, input="txt", token = token, ...) %>%
n_distinct()
}
d <- tibble(txt = prideprejudice)
count_tokens(d, "word", to_lower = FALSE)
#> [1] 6915
count_tokens(d, "ngram", token = "ngrams", to_lower = FALSE, n = 8)
#> [1] 122189
count_tokens(d, "ngram", token = "ngrams", to_lower = FALSE, n = 5)
#> [1] 121599
count_tokens(d, "ngram", token = "ngrams", to_lower = FALSE, n = 3)
#> [1] 104664
由 reprex package (v0.3.0)
创建于 2021-02-03