循环用于从数据框列创建多个向量

时间:2015-10-23 14:18:32

标签: r

我想从mtcars数据框的每一列创建一个向量。我需要两个解决方案。第一个应该在循环中完成,如果可能的话,另一个没有循环。

所需的输出应该是这样的:

vec_1 <- mtcars[,1]
vec_2 <- mtcars[,2]

etc...

我试图创建一个循环,但我失败了。你能告诉我那个循环有什么问题吗?

vec <- c()
for (i in 1:2){
  assign(paste("vec",i,sep="_" <- mtcars[,i][!is.na(mtcars[,i])]
}

我需要从我的数据中删除可能的NA,这就是我将它放在示例中的原因。

1 个答案:

答案 0 :(得分:1)

您的循环缺少几个括号,您应该将向量分配给R会话的全局环境,如下所示:

for (i in 1:2) {
  assign(sprintf("vec_%d", i), mtcars[!is.na(mtcars[[i]]), i], envir = .GlobalEnv)
}

没有循环就无法获得所需的结果。