对因子子集执行操作

时间:2016-06-02 00:37:25

标签: r

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

data$condition.f <- factor(data$condition, labels = c("notest", "test"))

我有一个变量,x包含对问题的右(1)和错误(0)响应。

> data$x
  [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [42] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA  1  1  1 NA NA  1  0 NA  1  1  1  0  0  0  1  0  1  0
 [83]  1  1  0  1 NA  1  0  1  1  1  1  1 NA  1 NA  0  1  1  1  0  1  0  1  1  0 NA  1  1  1  1  1  1  0  1 NA  1  0  0

向量的前半部分对应于未进行测试的那些(因此是NA),其余部分代表那些参加测试的那些。

我想替换那些用0测试的那些NAs。我尝试了以下代码:

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

我不确定究竟是什么问题,虽然我知道它与 if 语句有关。有没有更好的方法来替换那些参加测试的那些NAs为0?

谢谢

1 个答案:

答案 0 :(得分:3)

您的问题出现是因为您尝试将矢量(setTimeout(myFunction.bind(this, 'p'), 1000);)与字符串(data$condition.f)进行比较。

"test"呢?

修改:我在 thelatemail 的建议中修正了我的错误。