我想将for循环的输出捕获到向量中,以便可以绘制它。一个简单的例子如下:
for(i in 3:5) {
z <- i + 1
print(z)
}
[1] 4
[1] 5
[1] 6
如何捕获4,5,6的输出以便可以绘制?
答案 0 :(得分:4)
使用for
(或sapply
),而不是使用lapply
循环和打印值,更好的习惯用语是:
sapply(3:5, function(i)i+1)
[1] 4 5 6
如果出于某种原因,您无法使用apply
系列的成员,则可以修改循环以将函数的输出值分配给向量:
z <- vector("numeric", 3)
for(i in 3:5) { z[i-2] <- i + 1 }
z
[1] 4 5 6
在极少数情况下,实际捕获print
:
z <- vector("numeric", 3)
for(i in 3:5) { z[i-2] <- capture.output(print(i + 1)) }
z
[1] "[1] 4" "[1] 5" "[1] 6"
但是你会注意到它会捕获print
的所有输出,包括矢量信息。你可以使用cat
:
z <- vector("numeric", 3)
for(i in 3:5) { z[i-2] <- capture.output(cat(i + 1)) }
z
[1] "4" "5" "6"
现在你有了一个角色向量,并且必须进行一些清理。
不要尝试在循环中捕获print
的输出。使用sapply
或lapply
。