将for循环中的结果保存为r中的向量

Zsl*_*ce 5 for-loop r vector

我有一个相当简单的问题.

我有以下代码:

for (i in 1:10) {print (i) } 
Run Code Online (Sandbox Code Playgroud)

如何将结果保存为矢量?

如果我试试

my_vector <- for (i in 1:10) {print (i) } 
Run Code Online (Sandbox Code Playgroud)

然后调用my_vector,我得到Null.

Ric*_*ven 10

调用print将始终将每次迭代的结果打印到控制台.如果你留在print命令中,那么你可能会得到不需要的输出.

你的主要问题是你没有my_vectorfor循环之前初始化.您可以改为执行以下操作而不会print产生副作用.

my_vector <- vector("numeric", 10L)
for(i in 1:10) my_vector[i] <- i
my_vector
# [1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

但请注意,这与执行以下操作相同sapply,但在这种情况下,您不需要声明,您可以将结果分配给矢量.

my_vector2 <- sapply(1:10, function(x) x)
my_vector2
# [1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

  • 等价地:`sapply(1:10,identity)`,`sapply(1:10,force)`或`sapply(1:10,"(")`.或者,用vapply:`vapply(1:10," (",1L)` (3认同)