You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 16:42:33