R - 如何保存“打印”的值?

时间:2010-04-19 12:49:57

标签: r for-loop

在R中,当我使用“print”时,我可以看到所有值,但是如何将其保存为矢量?    例如,在'for'循环中:    for(i in 1:10),我想要A的值,当i = 1,2,3,4 .....但如果我使用x=A,它只保存A的最终值,即i = 10时的值。那么,如何保存print(A)中的值?     另外,我使用多个'for'循环,例如:

for (i in 1:9) {
  for (k in 1:4) {
  }
}

因此,x [i] = A ..在这里不能很好地工作。

3 个答案:

答案 0 :(得分:5)

我认为Etiennebr的答案会向您展示您应该做什么,但这里是如何按照您的意愿捕获print的输出:使用capture.output函数。

> a <- capture.output({for(i in 1:5) print(i)})
> a
[1] "[1] 1" "[1] 2" "[1] 3" "[1] 4" "[1] 5"

你可以看到它完全按照打印的方式捕获所有内容。为避免拥有所有[1],您可以使用cat代替print:

a <- capture.output({for(i in 1:5) cat(i,"\n")})
> a
[1] "1 " "2 " "3 " "4 " "5 "

再一次,您可能并不真的想为您的应用程序执行此操作,但有时这种方法很有用(例如,隐藏某些功能所坚持的自动打印文本)。

编辑: 由于printcat的输出是一个字符串,如果你捕获它,它仍然是一个字符串并且会有引号要删除引号,只需使用as.numeric

> as.numeric(a)
[1] 1 2 3 4 5

答案 1 :(得分:2)

也许你应该使用c()

a <- NULL
for(i in 1:10){
  a <- c(a,i)
}
print(a)

答案 2 :(得分:0)

另一个选项可能是Reduce函数:

a <- Reduce(function(w,add) c(w,add), NULL, 1:10)