在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 ..在这里不能很好地工作。
答案 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 "
再一次,您可能并不真的想为您的应用程序执行此操作,但有时这种方法很有用(例如,隐藏某些功能所坚持的自动打印文本)。
编辑:
由于print
或cat
的输出是一个字符串,如果你捕获它,它仍然是一个字符串并且会有引号要删除引号,只需使用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)