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

R语言如何按行名删除数据行?拆分训练集时报错求助

问题解决方法

错误原因

你遇到的invalid argument to unary operator错误,是因为R中负索引仅支持数值类型,不能直接对字符型的行名向量使用负号(-)进行排除操作。

可行解决方案

以下两种方法都不需要添加额外的名称列或因子化,适配你插补后的数据结构:

方法1:通过%in%取反筛选行

直接筛选行名不在排除列表中的数据:

# 定义需要排除的行名集合
exclude_rows <- c('IDN','BGD','PHL','IRN','JPN','IRQ','ETH','ZAF','GBR','ESP','CAN','ARG','TLS','SLB','ECU')
# 生成训练集:保留不在排除列表中的行
train_data_PCA <- PCA_data_v2[!rownames(PCA_data_v2) %in% exclude_rows, ]

方法2:先转换为数值索引再删除

先把要排除的行名转换成对应的行索引,再用负索引删除:

exclude_rows <- c('IDN','BGD','PHL','IRN','JPN','IRQ','ETH','ZAF','GBR','ESP','CAN','ARG','TLS','SLB','ECU')
# 获取需要排除行的数值索引
exclude_indices <- which(rownames(PCA_data_v2) %in% exclude_rows)
# 删除指定索引的行,生成训练集
train_data_PCA <- PCA_data_v2[-exclude_indices, ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:50:27