【问题标题】:R Programming: Saving printed output of a for loop to a vectorR编程:将for循环的打印输出保存到向量
【发布时间】:2015-12-22 03:49:56
【问题描述】:

我一直在用 R 编写代码,但遇到了一些麻烦。这是我的代码:

# 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”的向量(所以只有五个元素中的两个)。有谁知道我怎样才能得到完整的向量?

【问题讨论】:

  • 当然你只有两个Rr。每次匹配其中一个时,您都会覆盖 result[v]。与result &lt;- c(result, v) 联系,即使这是一种不好的做法。
  • 你应该使用一些缩进,因为很难看到条件是否以这种方式结束。

标签: r for-loop vector output


【解决方案1】:

你应该看看中间值的特征:

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

我认为 while 循环更符合您在字符为“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" ""  "" 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 2019-02-02
    • 1970-01-01
    • 2010-12-13
    • 2021-07-11
    • 2014-12-07
    • 1970-01-01
    相关资源
    最近更新 更多