Как создать куб изображения - PullRequest
0 голосов
/ 19 декабря 2018

Я новичок в R и хотел бы использовать его для анализа и визуализации данных.

У меня есть фрейм данных с 38575 строками (пикселями) и 600 столбцами.Каждый столбец содержит интенсивность аналита, в результате чего спектр на пиксель.У меня также есть координаты x и y для каждого пикселя, чтобы создать куб данных (массив), в том смысле, что если я скажу, что image_cube [1,1,] даст мне первый спектр, и если я скажу, image_cube [,, 1], яполучить изображение всех пикселей, показывающее интенсивность для первого аналита.Не все пиксели имеют спектр, и они не находятся в кадре данных, это должны быть пустые пиксели (черные).

РЕДАКТИРОВАТЬ

Я пытался использовать следующий кодс данными окупаемости инвестиций, являющимися большим фреймом данных, а sample_overview - переменной, содержащей координаты x и y для каждого пикселя:

ROI_cube <- array(rep(0, 311*381*603), dim=c(311, 381, 603))   
for (i in 1:dim(ROI_data)[1]) {
  ROI_cube[sample_overview[i,2], sample_overview[i,1],] = ROI_data[i,]
}

Но я получаю следующую ошибку:

Error in ROI_cube[sample_overview[i, 1], sample_overview[i, 2], ] <- ROI_data[i,  : 
  incorrect number of subscripts

1 Ответ

0 голосов
/ 19 декабря 2018

Если я правильно понял ваш вопрос, вы хотите отобразить двумерный массив данных спектров через известные координаты xy в трехмерный массив.Если это все, что вам нужно, вам не нужны никакие пакеты, это просто вопрос отображения данных в кадре данных в массив

  #Simulate some gaussian spectra
  set.seed(1234)
  simSpec <- function()
  {
    x <- 1:400
    y <- stats::dnorm(x,mean=runif(1,min=0,max=400),sd=runif(1,min=2,max=50))
    return(y)
  }

  #build a dataframe
  data <- data.frame(matrix(data=NA,nrow=400,ncol=20))
  for(i in 1:20) data[,i] <- simSpec()

  #assume data is ordered in ascending x/y pixels 
  #=> data[,1] -> x=1, y=1 ; data[,2] -> x=2, y=1; data[,length(x)] -> x=length(x), y=y; 
  #data[,m+(n-1)*length(x)] -> x=m, y=n

  Array <- array(data=t(data),dim=c(5,4,400)) #Build Array of format [X,Y,NSpectralVariables]
                                              #transpose dataframe because default order is to first increase Columnnumber

  plot(Array[1,1,],type="l") # Plot Spectrum at x=1, y=1
  contour(Array[,,1]) #Contour Intensity at first Analyte
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...