In R , when I use "print", I can see all the values, but how ca开发者_高级运维n I save this as a vector?
For example, in a 'for' loop:
for(i in 1:10)
, I would like the value of A , when i= 1,2,3,4..... but if I use x=A
, it only saves the final value of A which is the value when i = 10. So, how can I save the values in print(A)?
Additionally, I use more than one 'for' loop e.g.:
for (i in 1:9) {
for (k in 1:4) {
}
}
Consequently, x[i]=A..does not work very well here.
I think Etiennebr's answer shows you what you should do, but here is how to capture the output of print
as you say you want: use the capture.output
function.
> a <- capture.output({for(i in 1:5) print(i)})
> a
[1] "[1] 1" "[1] 2" "[1] 3" "[1] 4" "[1] 5"
You can see that it captures everything exactly as printed. To avoid having all the [1]
s, you can use cat
instead of print:
a <- capture.output({for(i in 1:5) cat(i,"\n")})
> a
[1] "1 " "2 " "3 " "4 " "5 "
Once again, you probably don't really want to do this for your application, but there are situations when this approach is useful (eg. to hide automatically printed text that some functions insist on).
EDIT:
Since the output of print
or cat
is a string, if you capture it, it still will be a string and will have quotation marks To remove the quotes, just use as.numeric
:
> as.numeric(a)
[1] 1 2 3 4 5
Maybe you should use c()
.
a <- NULL
for(i in 1:10){
a <- c(a,i)
}
print(a)
Another option could be the function Reduce:
a <- Reduce(function(w,add) c(w,add), NULL, 1:10)
精彩评论