2015-12-22 84 views
0

我一直在編寫R代碼,並且遇到了一些麻煩。這裏是我的代碼:R編程:將for循環的打印輸出保存到一個矢量中

# Pre-defined variables 
rquote <- "R's internals are irrefutably intriguing" 
chars <- strsplit(rquote, split = "")[[1]] 

# Your solution here 
result<-c() 
for (v in chars) { 
if (v=="r" | v=="R") { 
} else if (v >= "u") { 
break 
} else { 
next 
} 
result[v]<-v 
} 
result 

我希望結果將包含所有打印的輸出for循環創建。它應該是「R」,然後是四個「r」。然而,我只能得到一個只有「R」和「r」的矢量(所以只有五個元素中的兩個)。有誰知道我如何獲得完整的矢量?

+2

當然你只有2個'R'和'r'。每當你匹配其中一個結果時,你就會覆蓋結果[v]。即使這是一種不好的做法,也可以用'result < - c(result,v)'來查看。 – 2015-12-22 03:53:49

+0

你應該使用一些縮進,因爲很難看到條件是否以你想要的方式結束。 – meneldal

回答

0

你應該看看中間值的特性:

> str(chars) 
chr [1:40] "R" "'" "s" " " "i" "n" "t" "e" "r" "n" ... 

我想了一會兒循環會更符合您的明顯願望保持停止處理時的角色是一個「U」:

result<-c(); i=1 
while (chars[i] != "u") { 
if (chars[i]=="r" | chars[i]=="R") { 
result[i] <- chars[i] 
} else { result[i] <-""} 
i=i+1 
} 
result 
#------ 
[1] "R" "" "" "" "" "" "" "" "r" "" "" "" "" "" "" "r" "" "" 
[19] "" "r" "r" "" ""