我試圖在R中向量化一個大的for循環.sdata幀有300萬觀察值和26個變量(我不能在這裏上傳)。向量化R中的大循環
setsize <- 6
eccent <- 150
ctrX <- 400
ctrY <- 300
xyrotate <- function(x,y,ctrX,ctrY,angle){
distX <- x - ctrX;
distY <- y - ctrY;
radians <- angle * (pi/180);
rotX <- ctrX + (distX*cos(radians)) - (distY*sin(radians));
rotY <- ctrY + (distX*sin(radians)) + (distY*cos(radians));
coordinates <- list("X" = rotX,"Y" = rotY)
return(coordinates)
}
loc <- data.frame(x = numeric(setsize),
y = numeric(setsize))
loc$x[1] <- ctrX
loc$y[1] <- ctrY - eccent
for(i in 2:setsize){
coord <- xyrotate(loc$x[1], loc$y[1],ctrX,ctrY,(i-1)*(360/setsize))
loc$x[i] <- coord$X
loc$y[i] <- coord$Y
}
for(d in 1:setsize){
x <- sdata$RIGHT_GAZE_X-loc$x[d]
y <- sdata$RIGHT_GAZE_Y-loc$y[d]
gazedist[,d] <- sqrt(x^2+y^2)
}
有了這個代碼,我不斷收到錯誤:
Error in gazedist[, d] <- sqrt(x^2 + y^2) :
incorrect number of subscripts on matrix
關於如何解決它的任何想法? gazedist [d,]也不起作用。
需要知道'nrow(sdata)'是否恰好是3MM並且是什麼'setsize'等於,並且「members」是否意味着「行」? 'str(凝視)'顯示什麼? –