Преобразование класса «AsIs» в data.frame в R - PullRequest
1 голос
/ 18 июня 2020

Данные взяты из

 datasetname="riboflavin"
  data(riboflavin, package = "hdi")
  Y=as.numeric(riboflavin$y)-1
  mydata=data.frame(Y,X)

 #X now is 71*4088 
str(X) 
 'AsIs' num [1:71, 1:4088] 8.49 7.64 8.09 7.89 6.81 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:71] "b_Fbat107PT24.CEL" "b_Fbat107PT30.CEL" "b_Fbat107PT48.CEL" "b_Fbat107PT52.CEL" ...
  ..$ : chr [1:4088] "AADK_at" "AAPA_at" "ABFA_at" "ABH_at" ... 
#71*1
 str(Y) 
 num [1:71] -7.64 -7.95 -8.93 -9.29 -8.31 ...

 dim(mydata)
[1] 71  2

почему dim (mydata) не 71 * 4089? Как получить data.frame из (X, Y) с размерностью 71 * 4089?

Спасибо

1 Ответ

1 голос
/ 18 июня 2020

num [1:71, 1:4088] означает, что riboflavin$x является матрицей. cbind преобразование измененного столбца y в матрицу x должно решить проблему.

res <- as.data.frame(cbind(Y=riboflavin$y - 1, X=riboflavin$x))
dim(res)
# [1]   71 4089
...