将可变数量的向量添加到矩阵

时间:2018-06-22 21:58:58

标签: r variables for-loop vector cbind

我正在尝试编写一个将可变数量的向量添加到矩阵的函数。

这就是我得到向量x1-xi

的方法
for (i in 2:ncol(datasource))
{
   temp1 <- paste("x", i-1, sep = "")
   assign(temp1, as.numeric(unlist(datasource[i])))
 }

来自具有不同列数的数据源。所以我想做的是:

df <- data.frame()
for (i in 2:ncol(datasource))
  {
    df <- cbind(paste("x", i-1, sep = ""))
  }

有x1-xi个矢量。但这是行不通的,因为paste()的输出为“字符”模式。是否存在可以在for循环中将向量一一绑定在一起的函数?

我希望得到的输出:

df
     x1    x2
[1,]  3 21.50
[2,]  3 43.00
[3,]  2 19.90
[4,]  4 36.00
[5,]  4 44.00
[6,]  6 49.80
[7,]  0  1.30
[8,]  0  0.67
[9,]  2 13.40

非常感谢大家!

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

mtx <- matrix( x1, ncol=1 )
for (i in 2:ncol(datasource))
  {
    mtx <- cbind( get( paste0("x", i-1), mtx))
  }

然后转换为data.frame。 cbind.data.frame函数不能将空数据框作为起点。

答案 1 :(得分:0)

感谢42的帮助,我明白了:

mtx1 <- matrix(NA, ncol=ncol(datasource)-1, nrow=nrow(datasource))

for (i in 2:ncol(datasource))
{
  mtx1[,i-1] <- get(paste0("x", i-1)) 
}

df1 <- as.data.frame(mtx1)