R 重新设置详细信息以修复它们
代码示例:R 重新设置详细信息以修复它们,r,tidyr,quanteda,R,Tidyr,Quanteda,代码示例: library(quanteda) library(tidyr) library(dplyr) df <- data.frame(id = c(1,2), text = c("I am loving it", "I am hating it"), stringsAsFactors = FALSE) myDfm <- df$text %>% tokens(remove_punct = TRUE, remove_numbers = TRUE, remov
library(quanteda)
library(tidyr)
library(dplyr)
df <- data.frame(id = c(1,2), text = c("I am loving it", "I am hating it"), stringsAsFactors = FALSE)
myDfm <- df$text %>%
tokens(remove_punct = TRUE, remove_numbers = TRUE, remove_symbols = TRUE) %>%
tokens_remove(pattern = c(stopwords(source = "smart"))) %>%
dfm()
out <- convert(myDfm, to = "data.frame")
pivot_longer(out, cols = !contains("document"), names_to = "features", values_to = "count") %>%
mutate(id = as.integer(gsub("[a-z]", "", document))) %>%
filter(count != 0) %>%
inner_join(df) %>% # joins on id
select(id, features) # select only the id and features column
我运行了一个特定的命令,但出现了错误
这是追溯
我能做些什么来修复它
> rlang::last_error()
<error/rlang_error>
`!contains("document")` must evaluate to column positions or names, not a logical vector
Backtrace:
1. `%>%`(...)
4. tidyr::pivot_longer(...)
5. tidyr::build_longer_spec(...)
6. tidyselect::vars_select(unique(names(data)), !!enquo(cols))
7. tidyselect:::bad_calls(bad, "must evaluate to { singular(.vars) } positions or names, \\\n not { first_type }")
8. tidyselect:::glubort(fmt_calls(calls), ..., .envir = .envir)
Run `rlang::last_trace()` to see the full context.
> rlang::last_trace()
<error/rlang_error>
`!contains("document")` must evaluate to column positions or names, not a logical vector
Backtrace:
x
1. +-`%>%`(...)
2. | \-base::eval(lhs, parent, parent)
3. | \-base::eval(lhs, parent, parent)
4. \-tidyr::pivot_longer(...)
5. \-tidyr::build_longer_spec(...)
6. \-tidyselect::vars_select(unique(names(data)), !!enquo(cols))
7. \-tidyselect:::bad_calls(bad, "must evaluate to { singular(.vars) } positions or names, \\\n not { first_type }")
8. \-tidyselect:::glubort(fmt_calls(calls), ..., .envir = .envir)
问题是,您试图在out对象中引用一个不存在的列-文档-但它并不存在。正确的列名是doc\u id 这实际上在即将发布的2.1.0中有所改变,我们将其从document重命名为doc_id,因为这在整个包中更加一致。因此,我怀疑您正在使用quanteda v 2.0.9000开发版本作为示例 这将使用以下任一版本修复它: 量子图书馆 软件包版本:2.0.1 图书馆三年 图书馆弹琴 正在附加包:“dplyr” 以下对象已从“package:stats”屏蔽: 滤波器,滞后 以下对象已从“package:base”屏蔽: 相交、setdiff、setequal、并集 df% 令牌\u removepattern=cstopwordssource=smart%>% dfm 超出% 过滤器计数!=0 %>% 内部joindf%>%id上的联接 选择id,功能仅选择id和功能列 连接,通过=id 一个tibble:2x2 id特征 1.爱 2.憎恨
问题是,您试图在out对象中引用一个不存在的列-文档-但它并不存在。正确的列名是doc\u id 这实际上在即将发布的2.1.0中有所改变,我们将其从document重命名为doc_id,因为这在整个包中更加一致。因此,我怀疑您正在使用quanteda v 2.0.9000开发版本作为示例 这将使用以下任一版本修复它: 量子图书馆 软件包版本:2.0.1 图书馆三年 图书馆弹琴 正在附加包:“dplyr” 以下对象已从“package:stats”屏蔽: 滤波器,滞后 以下对象已从“package:base”屏蔽: 相交、setdiff、setequal、并集 df% 令牌\u removepattern=cstopwordssource=smart%>% dfm 超出% 过滤器计数!=0 %>% 内部joindf%>%id上的联接 选择id,功能仅选择id和功能列 连接,通过=id 一个tibble:2x2 id特征 1.爱 2.憎恨
您好,Nathanlie,我认为如果您提供导致错误的代码和一些示例数据,那么它将运行起来,这将更容易提供帮助。@Ianampbell感谢我为提供代码而进行了适当的更新。您的代码不会给我带来任何错误。我使用的是tidyr 1.1.0.9000和dplyr 1.0.0。您也可以尝试使用-containsdocument代替!containsdocumentHi Nathanlie,我认为如果您提供导致错误的代码和一些示例数据,那么它将运行起来,这将更容易提供帮助。@IanCampbell感谢我为提供代码而进行了适当的更新。您的代码不会给我带来任何错误。我使用的是tidyr 1.1.0.9000和dplyr 1.0.0。您也可以尝试使用-containsdocument代替!包含文档