我需要创建一个向量(我们称之为"支持向量"(,将其他向量("主向量"(中的位置与所需值相匹配。我的猜测是最简单的方法是使用 for
和 ifelse
.我熟悉使用 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