Temat: Problem "incorrect number of subscripts on matrix"

Witam,
od jakiegoś czasu borykam się z pewnym problemem. Z tablicy "a" (3-wymiarowa) chcę obliczyć maksymalne wartości wzdłuż jej osi Z (przyjmując, że tablica ma osie i pierwsze dwie to X i Y) i zapisać je w dwuwymiarowej tablicy "b". Nie wiem z jakiego powodu, w niektórych przypadkach poniższy kod nie działa i wyświetla się błąd:
"incorrect number of subscripts on matrix"


for (k in 1:5) {
b[1,k]<-max(a[1,k,])
}


Mam nadzieję, że problem wynika jedynie z mojej niewielkiej wiedzy z zakresu R i statystyki ogólnie:)
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: Problem "incorrect number of subscripts on matrix"

Żeby użyć pętli w ten sposób musisz wcześniej zadeklarować 'b'. np:


a <- array(rnorm(2*3*5), dim=c(2,3,5))
b <- matrix(0, 2, 3)
for ( k in 1:3 ) b[1,k] <- max(a[1,k,])


w ogóle, to zamiast pętli polecam 'apply':

a <- array(rnorm(2*3*5), dim=c(2,3,5))
b <- apply(a, c(1,2), max)

Temat: Problem "incorrect number of subscripts on matrix"

nie napisałem, ale "b" było wcześniej zdeklarowane, więc to raczej nie tu leży problem.
dzięki za sugestię użycia 'apply'. co oznacza jej środkowy parametr (c(1,2))? dobrze się domyślam, że chodzi o to aby wynik był dwuwymiarową macierzą? byłoby faktycznie dużo prościej.
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: Problem "incorrect number of subscripts on matrix"

Piotr Tompalski:
nie napisałem, ale "b" było wcześniej zdeklarowane, więc to raczej nie tu leży problem.

Trudno zgadywać, bo nie napisałeś definicji (kodu) ani 'a' ani 'b'...

dzięki za sugestię użycia 'apply'. co oznacza jej środkowy parametr (c(1,2))? dobrze się domyślam, że chodzi o to aby wynik był dwuwymiarową macierzą? byłoby faktycznie dużo prościej.

Drugi argument to numery wymiarów tablicy, ze względu na które ma być liczona funkcja. W tym przypadku dla każdej kombinacji wartości wymiarów 1 i 2 liczymy maximum elementów ze względu na pozostałe wymiary (w tym wypadku twój wymiar Z).

Temat: Problem "incorrect number of subscripts on matrix"

Michał Bojanowski:

Trudno zgadywać, bo nie napisałeś definicji (kodu) ani 'a' ani 'b'...
Sorry, mea culpa

Drugi argument to numery wymiarów tablicy, ze względu na które ma być liczona funkcja. W tym przypadku dla każdej kombinacji wartości wymiarów 1 i 2 liczymy maximum elementów ze względu na pozostałe wymiary (w tym wypadku twój wymiar Z).

Dzięki. Zaraz przetestuję.

Następna dyskusja:

Iteracja for (problem z zap...




Wyślij zaproszenie do