基于条件(for和ifelse)向向量添加新值

时间:2018-03-13 18:23:21

标签: r

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

#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}

它会生成错误,表明我的代码中存在=问题(或者我错了?)。我应该使用哪些方法/功能绕过=

提前谢谢

2 个答案:

答案 0 :(得分:0)

最简单的方法可能是:

int[] A = {1, 1, 5, 3};
int[] B = {7, 5, 2, 3};
boolean result = isGreater(A,B); 

/* 
result is true because:

A[0] < B[2], 
A[1] < B[3],
A[2] < B[0], 
A[3] < B[1].

Every integer in A found its greater integer in B. Note that multiple mappings can exist,
finding one is enough to return true.
*/

出于某种原因,如果support_vector <- as.numeric(main_vector == "ABC") > support_vector #[1] 1 1 1 0 仍然想要使用OP,则不需要for-loop而是ifelse可以更方便/可读的长度参数选项{ {1}}。

if-else

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

答案 1 :(得分:0)

这是另一种方法(不像@gdkm或@MKR那样好但在某些方面可能有用):

RewriteRule ^schedule/?$    http://www.example.com/qB/?sch=$1    [NC,L]