R 是否基于单独的向量删除数据帧的行?
我有一个包含NA值和字符串组合的向量:R 是否基于单独的向量删除数据帧的行?,r,dataframe,vector,R,Dataframe,Vector,我有一个包含NA值和字符串组合的向量: v <- c(NA, NA, "text", NA) 由于v的第三个元素是唯一不为NA的元素,因此只保留df的第三行。我尝试使用for循环来实现这一点: for (i in 1:length(v)) { if (is.na(v[i])) { df <- df[-i, ] } } 我不明白为什么循环不起作用。任何建议,谢谢 这样就可以了- df[!is.na(v), ] 你不需要一个循环。您始终可以使用行索引
v <- c(NA, NA, "text", NA)
由于v
的第三个元素是唯一不为NA的元素,因此只保留df
的第三行。我尝试使用for循环来实现这一点:
for (i in 1:length(v)) {
if (is.na(v[i])) {
df <- df[-i, ]
}
}
我不明白为什么循环不起作用。任何建议,谢谢 这样就可以了-
df[!is.na(v), ]
你不需要一个循环。您始终可以使用行索引向量或逻辑向量(TRUE
和FALSE
)对任何数据帧进行子集划分<代码>!is.na(v)基于v
生成一个逻辑向量,并相应地对数据帧进行子集划分 这样就可以了-
df[!is.na(v), ]
你不需要一个循环。您始终可以使用行索引向量或逻辑向量(
TRUE
和FALSE
)对任何数据帧进行子集划分<代码>!is.na(v)基于v
生成一个逻辑向量,并相应地对数据帧进行子集划分 谢谢你,效果很好!出于好奇,您知道为什么我原来的for循环给出了不正确的输出吗?您正在从循环中的df
中删除行,因此您的索引-i
与修改后的df
不匹配。谢谢,这非常有效!出于好奇,您知道为什么我最初的for循环给出了不正确的输出吗?您正在从循环中的df
中删除行,因此您的索引-i
与修改后的df
不匹配。
Col1 Col2
2 6
4 8
df[!is.na(v), ]