2015-12-22 158 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" "" ""