2013-06-21 51 views
0

我想产生一个循环为这样的:使用if(任何())在for循环中

group1 = c(1,3,7,25) 

for (ii in 1:25){ 
    if (ii == any(group1)){test = 5} else {test=1} 
} 

我收到关于强迫我喜欢的类型的“双师型”的说法逻辑警告。结果是只有我的else语句被使用。这是什么意思,我该如何解决这个问题?谢谢。

+1

你问任何'() '以确定是否有任何值你的矢量'group1'是真的......我想你可能想'任何(%%组1)%'。 – Justin

+2

@Justin也许完全不需要“任何”...? – joran

+0

@joran由jove我认为你可能是对的! – Justin

回答

1

这并不完全清楚你想要什么。可能

test <- c(1,5)[1+(1:25) %in% group1] 

相同的结果:

test <- ifelse(1:25 %in% group1, 5, 1) 

哦,好的,我会做出for -loopy版本,太:

test <- integer(25) 
for (ii in 1:25){ 
    if (ii %in% group1){test[ii] <- 5} else {test[ii] <- 1} 
       } 
test 
+0

,则any()也会返回FALSE究竟!谢谢迪文!你是对的,我不清楚我的测试输出应该是一个向量。 – struggleBus

0

您正在使用错误的任何功能

any(iterable) 

返回真,如果可迭代的任何元素是真实的。如果迭代器为空,则返回False。

+0

@OzanDeniz:这没有意义。只有一个“任何”功能。如果iterable == 0或者如果iterable = c(0,0,0,0),或者所有参数都是FALSE但是它们不是False –