使用在r中带有for循环的if语句返回结果

使用在r中带有for循环的if语句返回结果,r,R,我想根据if语句的结果以向量的形式返回结果。我在列中的默认值为“空白”,如果两个条件都满足==FALSE我希望向量/单元格有“一些文本”。以下是我到目前为止的情况: COMP30$Test_3<-"blank" matches<-list(c(COMP30$PMPI_Has_Plan,COMP30$PMPI_Is_Eligible,COMP30$Test_3)) for (match in matches){if (match[1]==FALSE & match[2]==FA

我想根据if语句的结果以向量的形式返回结果。我在列中的默认值为“空白”,如果两个条件都满足
==FALSE
我希望向量/单元格有“一些文本”。以下是我到目前为止的情况:

COMP30$Test_3<-"blank"
matches<-list(c(COMP30$PMPI_Has_Plan,COMP30$PMPI_Is_Eligible,COMP30$Test_3))
for (match in matches){if (match[1]==FALSE & match[2]==FALSE){match[3]<-"some text"}}

COMP30$Test_3根据我对您的数据集的猜测。请使用
dput
提供您的数据

使用矢量化:

COMP30$Test_3<-"blank"
matches <- cbind(COMP30$PMPI_Has_Plan, COMP30$PMPI_Is_Eligible, COMP30$Test_3)
matches[!matches[,1] & !matches[,2],3] <- "Some text"

您正在修改循环中的变量
match
,该变量在每次迭代时被删除。修改
匹配项
代替谢谢。为了修改匹配项,需要更改哪些代码?我尝试了这两种解决方案,但仍然没有返回预期结果或“某些文本”。例如,我稍微修改了矢量化解决方案,说:matches[matches[,1]==TRUE&matches[,2]==TRUE,3]@Chris2015是您的列布尔值还是字符串?使用
boolean==TRUE
相当于
boolean
,正如我看到的,它是TRUE还是false。它是布尔型的。但是如果我对这两个都使用==FALSE,我仍然不会返回结果。cbind中的前两列是布尔列,第三列是字符串,这有关系吗?前两列是逻辑列,第三列是字符。代码工作:匹配
matches <- cbind(COMP30$PMPI_Has_Plan, COMP30$PMPI_Is_Eligible, COMP30$Test_3)
for (k in 1:nrow(matches)){
  if (!matches[k, 1] & !matches[k, 2]){
    matches[k, 3] <- "some text"
  }
}