Error in `mutate()`: ℹ In argument: `words = map(hire_text$内容, segment, jieba = wk)`. Caused by error in `map()`: ! could not find function "map" Run `rlang::last_error()` to see where the error occurred.
时间: 2023-05-11 19:02:00 浏览: 309
这个错误是由于在调用map()函数时出现了问题,可能是因为map()函数没有被正确加载或者没有被正确调用。建议您检查代码中是否正确加载了map()函数,并且确保正确调用。如果问题仍然存在,可以使用rlang::last_error()函数查看错误的具体位置。
相关问题
Error in `mutate()`: ℹ In argument: `textrank.key = map(hire_words$word_tag, extract_keywords)`. Caused by error in `map()`: ℹ In index: 1. ℹ With name: text. Caused by error in `keywords()`: ! 不是所有的"keywords" %in% class(jiebar)都是TRUE
根据你提供的错误信息,问题出在`keywords()`函数上,因为它提示`! 不是所有的"keywords" %in% class(jiebar)都是TRUE`。这个错误通常是由于`keywords()`函数的参数传递有误导致的。我建议你重新检查一下`keywords()`函数的定义和调用方式,确保所有参数都正确传递。
根据你的代码,`keywords()`函数是在`extract_keywords()`函数中被调用的,所以需要检查该函数的定义和调用方式。你可以使用以下代码来查看`extract_keywords()`函数的定义:
```
# 查看函数定义
extract_keywords
```
在函数定义中检查`keywords()`函数的参数,确保传递了所有必要的参数。如果是传递的`jieba`参数导致的错误,那么你需要检查`jieba`对象的定义,确保它符合`keywords()`函数的要求。例如,如果`jieba`对象是一个列表,那么你可以使用以下代码来转换它:
```
# 将 jieba 对象转换为一个分词器函数
wk <- worker(byword = TRUE, user = NULL, stop_word = NULL, char = TRUE)
```
这样转换后的`wk`对象就可以作为`keywords()`函数的参数了。然后你可以像下面这样修改`extract_keywords()`函数:
```
# 修改 extract_keywords() 函数
extract_keywords <- function(dt) {
textrank_keywords(dt$word, relevant = str_detect(dt$tag, "^n"), ngram_max = 2) %>%
keywords(jieba = wk) # 添加 jieba 参数
}
```
修改后的函数将在调用`keywords()`函数时,传递一个符合要求的`jieba`参数,从而避免出现参数传递错误导致的问题。
hire_text<-read.csv("C:/Users/ASUS/Desktop/text.csv") hire_text hire_text %>% mutate(id = 1:n()) -> hire_txt #给文档编号3 worker(type = "tag") -> wk #构造一个分词器,需要得到词性56 hire_txt %>% mutate(words = map(hire_text,tagging,jieba = wk)) %>% mutate(word_tag = map(words,enframe,name = "tag",value = "word")) %>% select(id,word_tag) -> hire_words #构造提取关键词的函数 extract_keywords = function(dt){ textrank_keywords(dt$word,relevant = str_detect(dt$tag,"^n"),ngram_max = 2) %>% keywords } hire_words %>% mutate(textrank.key = map(word_tag,extract_keywords)) %>% select(-word_tag) -> tr_keyword
根据你提供的代码,出现了一个错误。错误在于`map()`函数的第一个参数`word_tag`,它需要的是一个列表,但是`word_tag`是一个列名,所以会导致以下错误信息:
```
Error in `map()`: In argument: `textrank.key = map(word_tag, extract_keywords)`. Caused by error in `map()`: In index: 1. With name: text.
```
如果你想要使用`word_tag`这一列,应该使用`hire_words$word_tag`,而不是`word_tag`。请修改代码如下:
```
hire_words %>%
mutate(textrank.key = map(hire_words$word_tag, extract_keywords)) %>%
select(-word_tag) -> tr_keyword
```
这样修改后,`map()`函数的第一个参数就是一个列表了,可以正确地运行提取关键词的函数`extract_keywords()`。
阅读全文