在R语言中按行索引位置将列值替换为NA的方法
按行索引替换数据框列值为NA的正确方法
问题背景
现有如下R数据框:
points_U <- data.frame( Date = c( "2015-07-28", "2015-07-29", "2015-07-30", "2015-07-31", "2015-08-01", "2015-08-02", "2015-08-03", "2015-08-04", "2015-08-05", "2015-08-06", "2015-08-07", "2015-08-08", "2015-08-09", "2015-08-10", "2015-08-11", "2015-08-12", "2015-08-13", "2015-08-14", "2015-08-15", "2015-08-16" ), U_NDVI = c( 0.241392907, 0.257591745, 0.263305712, NA, 0.252892547, 0.251771181, 0.249211747, 0.257289083, 0.205017583, 0.200722746, 0.210154168, 0.207384553, 0.193725451, 0.199282602, 0.216267134, 0.217052471, NA, 0.22070303, 0.21646198, 0.223442036 ) )
需要将U_NDVI列中行索引3、6、9、14、19、20的数值替换为NA,尝试了以下代码但未成功:
points_U$NDVI[3, 6,9, 14, 19, 20] <- NA
错误原因
- 列名错误:数据框中目标列的名称是
U_NDVI,但代码中写的是NDVI,导致无法定位到正确列。 - 索引方式错误:对向量(单列数据本质是向量)进行多位置索引时,需要用
c()将多个索引值包裹成一个向量,而非用逗号分隔。
正确解决方法
方法1:使用$引用列 + 向量索引
# 正确指定列名,并用c()构建索引向量 points_U$U_NDVI[c(3, 6, 9, 14, 19, 20)] <- NA
方法2:使用数据框的矩阵索引方式
# 格式为:数据框[行索引向量, 列索引/列名] points_U[c(3, 6, 9, 14, 19, 20), "U_NDVI"] <- NA
验证修改结果
可以通过以下代码查看修改后的U_NDVI列:
print(points_U$U_NDVI)
输出中对应索引位置的值已变为NA。
内容的提问来源于stack exchange,提问作者Cláudio Siva
相关产品推荐
相关产品推荐

