R语言中编写if_else语句检测数据框文本是否含指定词汇
问题分析与解决
你的代码错误在于直接将text列内容与字符串"animals_dict"做相等判断,而非检测文本中是否包含animals_dict集合里的任一词汇,因此生成的列全为0。
正确实现方式
首先确保已定义词汇集合:
animals_dict <- c("cat", "dog", "fish")
方法一:使用dplyr + stringr包
library(dplyr) library(stringr) data_zoo <- data_zoo %>% mutate(animals = if_else(str_detect(text, str_c(animals_dict, collapse = "|")), 1, 0))
方法二:使用Base R
# 用正则表达式合并词汇,|表示逻辑或 pattern <- paste(animals_dict, collapse = "|") # grepl返回TRUE/FALSE,as.integer将其转为1/0 data_zoo$animals <- as.integer(grepl(pattern, data_zoo$text))
说明
str_c(animals_dict, collapse = "|")或paste(animals_dict, collapse = "|")会把词汇集合拼接成正则表达式"cat|dog|fish",表示匹配其中任意一个词汇。str_detect和grepl都会检查文本中是否存在匹配的词汇,返回布尔值后再转为1或0。
内容的提问来源于stack exchange,提问作者user17896
相关产品推荐
相关产品推荐

