R语言按索引删除dataframe行时!运算符报错原因咨询
报错核心原因
! 是R中的逻辑取反运算符,仅能作用于布尔(逻辑)类型的向量,不能直接作用于字符串向量。
你正向筛选时 data[get_full_id$Sites,] 能正常运行,是因为R的dataframe支持直接传入行名字符向量来提取对应行,这属于R的行索引语法特性。但你直接对字符串类型的 get_full_id$Sites 加 ! 取反时,R无法识别操作对象类型,就会抛出「invalid argument type」错误。
正确的反向删除实现方式
你需要先生成对应行的布尔判断向量,再用 ! 取反筛选,常用写法如下:
# 方法1:判断行名是否在待删除列表中,取反后筛选 data <- data[!rownames(data) %in% get_full_id$Sites, ] # 方法2:直接用grep的反向匹配,省去中间提取待删除ID的步骤 data <- data[-grep(f_pattern, rownames(data)), ]
内容的提问来源于stack exchange,提问作者CuriousDude
相关产品推荐
相关产品推荐

