如何在R中添加2D矩阵作为数据帧变量?

时间:2016-06-08 13:56:10

标签: r matrix dataframe

我正在尝试使用PLS库来运行偏最小二乘回归。我用MATLAB从R.matlab'中导入了我的数据。图书馆。 我设法将一个矩阵很容易地插入到数据帧中,因为它是一维向量。它显示为

  

my_1d_matrix ... num [1:205,1] 124 138 38 76 155 ...

我的其他矩阵 205x4096 。它在我的工作区中显示如下:

  

my_2d_matrix ...大型列表(205个元素,6.5 Mb)

如何在同一数据框中插入此作为我的第二个变量?

PLS introductory pdf,我看到'汽油'他们使用的数据集由“辛烷值”组成。 (1d矢量)和' NIR' (2D大矩阵),所以我想对我的数据做同样的事情。因此,我认为我的二维矩阵应该具有相同的格式:

> library(pls)
> data(gasoline)    
> str(gasoline$NIR) 

是:

>AsIs [1:60, 1:401] -0.050193 -0.044227 -0.046867 -0.046705 -0.050859 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:60] "1" "2" "3" "4" ...
  ..$ : chr [1:401] "900 nm" "902 nm" "904 nm" "906 nm" ...

因此,最终结果应该是类似于'汽油的数据框,其中第一个变量是 my_1d_matrix 第二个 one是 my_2d_matrix

1 个答案:

答案 0 :(得分:1)

目前您的数据被读入列表,即您的2d矩阵,响应变量是矩阵。要将两者放入数据框,您可以尝试:

myData <- data.frame(y = my_1d_matrix)
myMat <- matrix(0,205,4096)
for(i in 1:205){
  myMat[i,] <- my_2d_matrix[[i]]
}
myData <- cbind(myData,myMat)

现在您应该可以致电plsr

myModel <- plsr(y ~ ., ncomp = 10, data = myData)

.只是意味着使用所有变量,因为myData数据框中没有指定名称,可能将名称作为数字。

如果这不起作用,那很可能是因为my_2d_matrix[[i]]包含的东西只是一个数字向量。

您可能希望在数据框中指定变量的名称,第一列是响应,其余的是大矩阵中的变量。