我想將一個for循環轉換爲更快的操作,如應用。轉換一個for循環在R
這是我的代碼
for(a in 1:dim(k)[1]){
for(b in 1:dim(k)[2]){
if((k[a,b,1,1]==0) & (k[a,b,1,2]==0) & (k[a,b,1,3]==0)){
k[a,b,1,1]<-1
k[a,b,1,2]<-1
k[a,b,1,3]<-1
}
}
}
這是一個簡單代碼,不會多維陣列k的每個元素上的檢查,如果三個元素是相同的,並且等於0,它分配值1。
有沒有辦法讓它更快?矩陣k有1,444,000個元素,運行它需要很長的時間。誰能幫忙?
感謝
請提供一個*可重複*的例子。 –
我的k矩陣非常大,但可以想象它可以定義如下:k <-array(c(1,1,1,0,2,2,2,0,3,3,3,0)), dim(c(2,2,3))' –
只需粘貼'dput(head(k))',或者如果這仍然過大,請縮小尺寸以包含'k [c(1,2),c (1,2),1,c(1:3)]'。 – LAP