как использовать семейство функций применения для векторного или матричного индекса

Есть ли способ использовать функцию X для записи в матрицу или вектор с использованием определенных индексов или просто обрабатывать индекс?

ex.

myVec <- numeric(10)
apply(1:9, 1, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)


person Marc Telly    schedule 10.03.2021    source источник


Ответы (1)


Оба приведенных ниже ответа должны работать. Ошибка, которую вы получаете, связана с тем, что apply() принимает матрицу и применяет функцию к полю (=1 подразумевается по строке). Поэтому я создал матрицу 9 x 1 на основе вашего кода.

    apply(matrix(1:9,nrow=9,ncol=1), 1, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
[1]    1.098612    9.000000    1.325969   81.000000    1.600377  729.000000    1.931573 6561.000000    2.331310
    sapply(1:9, function(i,a){ if(i%%2!=0) myVec[i] <-log(a)^i else myVec[i+1] <- a^i},3)
[1]    1.098612    9.000000    1.325969   81.000000    1.600377  729.000000    1.931573 6561.000000    2.331310
person jsv    schedule 10.03.2021