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
相关产品推荐
相关产品推荐

