我想用一個包含函數與矩陣mapply使用mapply使用的,如果是這樣的:符合條件
dim_rf <- 10
rf <- matrix(runif(dim_rf*dim_rf),ncol=dim_rf)
fire_rf <- function(i,j) {
if(rf[i,j+1] + rf[i+1,j] + rf[i,j-1] + rf[i-1,j]>1)
rf[i,j] <-2
}
mapply(fire_rf, row(rf), col(rf) )
,但它給出了一個錯誤
Error en if (rf[i, j + 1] + rf[i + 1, j] + rf[i, j - 1] + rf[i - 1, j] > :
參數長度爲零
我怎麼能修改功能,使其工作?
我用這個做火滲透的一個簡單的模型,因此需要快速,因爲100或1000
您應該增加像一些條件'如果(I> 1&J> 1&I
agstudy
當'j'或'i'是'1',您嘗試使用子集零爲索引元素'rf'。當'j'或'i'是等於最大列或行號,該索引也最終被'rf'之外。這在「if」語句中作爲錯誤結束。所以不要在'mapply'迭代中包含這些「邊緣」情況。 – BenBarnes
代碼的點是產生副作用。因此,只需使用'for'循環即可。 –