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

如何在R语言向量中获取包含字符串"Drake"的所有行?

解决:统计数据框中所有包含"Drake"的行

看起来你遇到的问题是现有代码只捕获了**完全等于"Drake"**的行,而那些包含Drake和其他艺术家的条目(比如"Drake, Kendrick Lamar, Post Malone")没被统计到——这是因为你的匹配方式太严格了。

问题出在哪?

你的代码里:

  • grep("Drake$", artist) 用了正则锚点$,只会匹配**以"Drake结尾"**的字符串;
  • which('Drake' == artist) 是精确相等匹配,只有当整行内容完全就是"Drake"时才会被选中。

这两种方式都无法覆盖Drake出现在字符串中间或开头的情况。

正确的解决方案

这里有两种简单的方法来获取所有包含"Drake"的行:

方法1:使用基础R的grep函数

不需要锚点,直接匹配字符串中任意位置的"Drake":

# 读取数据(保留你的原有代码)
data <- read.csv("C:/Users/Gabriel/Documents/responses.csv", header = TRUE)
artist <- data$artists

# 获取所有包含"Drake"的行索引
drake_rows <- grep("Drake", artist, fixed = TRUE)
# 查看这些行的索引
drake_rows
# 统计总数量
drake_count <- length(drake_rows)
drake_count
  • fixed = TRUE 表示我们匹配的是固定字符串(不是正则表达式),这样更准确,避免意外的正则语法干扰;
  • 如果需要忽略大小写(比如匹配"drake"或"DRAKE"),可以加上ignore.case = TRUE参数。

方法2:使用tidyverse的str_detect(更直观)

如果你习惯用tidyverse工具链,stringr包的str_detect函数会更易懂:

library(stringr)

# 读取数据
data <- read.csv("C:/Users/Gabriel/Documents/responses.csv", header = TRUE)
artist <- data$artists

# 生成逻辑向量:标记每行是否包含"Drake"
has_drake <- str_detect(artist, "Drake")
# 获取符合条件的行索引
drake_rows <- which(has_drake)
# 统计数量
drake_count <- sum(has_drake)
drake_count

这两种方法都能帮你捕获所有包含"Drake"的行,不管它在字符串的哪个位置。

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:13:45