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

在R语言中如何删除多列包含指定MP4文件名的行?

你之前代码的错误原因

  1. 读文件时na.strings参数使用错误:
    • 字符串值需要加英文双引号包裹,不加引号R会识别为变量名,才会报「对象未找到」的错误
    • 要传入多个匹配值需要用c()拼接成字符向量,不能用逻辑运算符&连接
  2. 第一次筛选逻辑错误:你筛选的是行名匹配目标文件名的行,而你的文件名存储在filename_left、filename_right两列,和行名完全无关,自然删不掉目标行
  3. 第二次筛选逻辑错误:你写的&是要求两列同时分别匹配两个目标文件才删除,只要任意一列不满足就会保留,漏掉了只有单列出现目标值的情况
  4. 第三次subset使用错误:subset函数第二个参数是完整的筛选条件,你用逗号分隔了两个条件,函数只会生效第一个filename_left != xxx的判断,完全没用到filename_right的过滤规则

正确实现方法

首先定义你要过滤的目标文件名向量:

target_remove <- c("Playdoh_Butterfly_Natural.mp4", "Playdoh_Butterfly_Unnatural.mp4")

方法1:基础R实现

# 只要filename_left或filename_right任意一列出现目标值,就删除该行
import <- import[!(import$filename_left %in% target_remove | import$filename_right %in% target_remove), ]

或者用subset写法更简洁:

import <- subset(import, !(filename_left %in% target_remove | filename_right %in% target_remove))

方法2:dplyr包实现(更易读)

library(dplyr)
import <- import %>%
  filter(!(filename_left %in% target_remove | filename_right %in% target_remove))

验证过滤结果

运行以下代码,如果输出全为FALSE说明所有目标行已经被删除:

any(import$filename_left %in% target_remove)
any(import$filename_right %in% target_remove)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 08:42:03