2013-06-21 70 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 –