Невозможно сохранить данные в матрице - PullRequest
0 голосов
/ 22 ноября 2018

Я использую следующий код для проверки P-значений линейного тренда, но кажется, что цикл не работает должным образом, так как я не вижу двумерную карту P-значения, а только строку

library(chron)
library(RColorBrewer)
library(lattice)
library(ncdf4)
#-------------------------------------------------------------------------------------------
options(warn=-1)

ncin <- nc_open("MOD04_10K_Winter.nc", readunlim=FALSE)
#print(ncin)
lon <- ncvar_get(ncin, varid="Longitude", start=NA, count=NA, verbose=FALSE,
          signedbyte=TRUE, collapse_degen=TRUE, raw_datavals=FALSE )
lat <- ncvar_get(ncin, varid="Latitude", start=NA, count=NA, verbose=FALSE,
                signedbyte=TRUE, collapse_degen=TRUE, raw_datavals=FALSE )
aod <- ncvar_get(ncin, varid="AOD", start=NA, count=NA, verbose=FALSE,
                signedbyte=TRUE, collapse_degen=TRUE, raw_datavals=FALSE )

px           <- matrix(nrow = 1:length(lon), ncol = 1:length(lat))
is.matrix(px)

for (lo in 1:length(lon)) {
  for (la in 1:length(lat)) {
   int1a    = aod[lo, la,]

   # if mean of int is finite then proceed else fill NA to all arrays
   mn = mean(int1a, trim = 0, na.rm = FALSE)
   if (is.finite(mn)) 
    {
    print("---------------- Reading Finite data -------------")
    xs       = 1:30                                     
    fn1a     = lm(int1a~xs)       # Function_NCP
    p_val    = summary(fn1a)$coefficients[2, 4]          # Saving p-value
    if (p_val < 0.05) {print("statisticlly significant")} else {print("statisticlly in-significant")}
    print(p_val)
    print(lo)
    print(la)
    px[lo][la] = p_val                                   # variables in [] only (?)
   } 

  }                                                      # latitude dimension
}   

Если я использую [lo, la] вместо [lo][la] У меня возникает следующая ошибка

Ошибка в [<- (*tmp*, lo, la, значение = 0,0543481042240582):
нижний индекс вне границ

Извините, если решение очень тривиально, я только начал работать в R.

1 Ответ

0 голосов
/ 22 ноября 2018

Вам нужно просто сделать небольшое исправление в матрице px декларации.Теперь вы устанавливаете количество строк и столбцов как векторы: nrow = 1:length(lon) и nrow = 1:length(lon).R молча берет только первые элементы этих векторов и генерирует матрицу 1 к 1.(На самом деле, это будет генерировать предупреждение, поскольку предупреждения подавляются!)

Итак, решение -

px <- matrix(nrow = length(lon), ncol = length(lat))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...