R 是否基于单独的向量删除数据帧的行?

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), ] 你不需要一个循环。您始终可以使用行索引

我有一个包含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), ]
你不需要一个循环。您始终可以使用行索引向量或逻辑向量(
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), ]