R:使用循环向向量添加值

时间:2015-08-21 15:19:29

标签: r

我是R的新手,我想执行以下简单代码:

vec_color <- c("red", "blue", "green", "yellow", "orange")
col_vec_final = c()

i <- 1
while (i <= 3)
{
col_vec_final <- c(col_vec_final, i = vec_color[i])
i <- i+1
}

我希望获得以下输出:

col_vec_final
     1      2     3
 "red" "blue" "green"

但是我只得到以下内容:

col_vec_final
     i      i     i
 "red" "blue" "green"

你能帮我解决这个问题并告诉我我的代码有什么问题吗?

提前感谢!

1 个答案:

答案 0 :(得分:1)

vec_color <- c("red", "blue", "green", "yellow", "orange")

首先,请记住,您可以对整个操作进行矢量化,并在一行中完成所有操作,如下所示 -

l <- seq_len(3)
( col_vec_final <- setNames(vec_color[l], l) )
#      1       2       3 
#  "red"  "blue" "green" 

就你的while()循环而言,我建议你首先分配结果向量,因为它比循环中构建向量更好,并且效率更高 - < / p>

n <- 3
col_vec_final <- vector(class(vec_color), n)

然后执行以下操作 -

i <- 1
while (i <= n)
{
    col_vec_final[i] <- vec_color[i]
    names(col_vec_final)[i] <- i
    i <- i + 1
}

col_vec_final
#      1       2       3 
#  "red"  "blue" "green"