我正在尝试编写一个将可变数量的向量添加到矩阵的函数。
这就是我得到向量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
非常感谢大家!
答案 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)