Я хотел бы ускорить то, что показано в псевдо-коде ниже, до максимально возможного в R (векторизованный или любой метод, который быстрее, чем простой цикл цикла).кумулятивное применение функции по размеру в R
визуализации У меня есть 4-мерный массив A
(заполненный произвольно 1 раз в качестве примера):
A = array(runif(nx*ny*nz*nt), c(nx,ny,nz,nt))
, и я хочу сделать это для цикла быстрее (заполнить output
массив, который имеет более высокое второе измерение в кумулятивных модах от предыдущего значения ... больше как совокупного продукт второго измерения массива входных A
:
output = array(1, c(nx, ny+1, nz, nt))
for (x in 1:nx)
{
for (z in 1:nz)
{
for (t in 1:nt)
{
for (y in 2:(ny+1))
{
output[x,y,z,t] = output[x,y-1,z,t] * (1 - A[x,y-1,z,t])
}
}
}
}
Как я могу сделать это быстрее? используя apply()
? или какой-то умный кумулятивный продукт с abind()
в конце?
Джонатан, вы удивительны! Это действительно намного быстрее. Благодарю. – user1780424
Добро пожаловать. Функции из семейства «apply» и векторизация обычно являются вашими друзьями, когда вас беспокоит скорость вашего кода. –