根据条件(for 和 ifelse)向向向量添加新值



我需要创建一个向量(我们称之为"支持向量"(,将其他向量("主向量"(中的位置与所需值相匹配。我的猜测是最简单的方法是使用 forifelse .我熟悉使用 for 将新值附加到向量,但它不适用于 ifelse .这是一个简单的例子,显示了我的想法(请阅读#描述(:

#the "main vector" with fixed values
main_vector=c("ABC","ABC","ABC","XYZ")
#empty "support vector" which I want fill 
support_vector=c()
#loop that puts into "support vector" 1 if "ABC" and 0 if "XYZ"
for(i in 1:length(main_vector)){ifelse(main_vector[i]=="ABC",support_vector[i]=1,support_vector[i]=0}

它生成的错误表明=是我的代码中的问题(或者我错了?我应该使用什么方法/功能来绕过使用=

提前谢谢你

最简单的方法是:

support_vector <- as.numeric(main_vector == "ABC")
> support_vector
#[1] 1 1 1 0

出于某种原因,如果OP仍然想使用for-loop那么就不需要ifelse而是if-else可以更方便/可读的长度1参数选项。

support_vector <- c()
for(i in 1:length(main_vector)){
      if(main_vector[i]=="ABC"){
        support_vector[i]=1
      } else {
        support_vector[i]=0
      }
}

注意:@gdkrmr提供的解决方案非常优雅。

这是另一种方法(不如@gdkm或@MKR那么好,但在某些方面可能很有用(:

> main_vector=c("ABC","ABC","ABC","XYZ")
> support_vector <- sapply(main_vector, function(x) as.integer(x=="ABC"))
> support_vector
ABC ABC ABC XYZ 
  1   1   1   0 

最新更新