R 对因子子集执行操作

R 对因子子集执行操作,r,R,我有一个因子变量,条件,它告诉我受试者是否参加了测试: data$condition.f <- factor(data$condition, labels = c("notest", "test")) 向量的前半部分对应于未进行测试的向量(因此为NAs),其余部分表示已进行测试的向量 我想将参加测试的NAs替换为0。我尝试了以下代码: if (data$condition.f == "test") { data$x[which(is.na(data$x))] <-

我有一个因子变量,条件,它告诉我受试者是否参加了测试:

data$condition.f <- factor(data$condition, labels = c("notest", "test"))
向量的前半部分对应于未进行测试的向量(因此为NAs),其余部分表示已进行测试的向量

我想将参加测试的NAs替换为0。我尝试了以下代码:

if (data$condition.f == "test") {

       data$x[which(is.na(data$x))] <- 0   

}
我不确定确切的问题是什么,尽管我知道这与if语句有关。是否有更好的方法可以仅针对那些参加测试的用户将NAs替换为0


谢谢

您的问题出现是因为您试图将向量(
data$condition.f
)与字符串(
“test”
)进行比较


关于警告(非错误)消息,
data$condition.f==“test”
返回与
data$condition.f
长度相同的逻辑向量<如果(…)需要一个逻辑值(长度为一个逻辑向量)。那是不对的。您将两个数字向量与一个逻辑
组合在一起,该逻辑
无法按预期工作,可能最终会将每个值替换为
0
data$x[is.na(data$x)&data$condition.f==“test”]太棒了,谢谢你们两位的帮助@最近的邮件供将来参考,我的原始代码有什么不正确的地方?似乎我写的if语句也进行了相同的条件求值(if vector==“blah”),然后在if语句中,我尝试将值0赋给NAs…@butlerbj-nrussell在他对上述问题的评论中提到了这一点
if (data$condition.f == "test") {

       data$x[which(is.na(data$x))] <- 0   

}
Warning message:
In if (data$condition.f == "test") { :
  the condition has length > 1 and only the first element will be used