我是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"
你能帮我解决这个问题并告诉我我的代码有什么问题吗?
提前感谢!
答案 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"