0
循環我有此腳本:替代爲R中
x<-seq(1,5)
y<-seq(6,10)
z<-sample(25)
x.range <- range(x)
y.range <- range(y)
df <- expand.grid(x = seq(from = x.range[1], to = x.range[2], by = 1), y = seq(from = y.range[1],
to = y.range[2], by = 1))
df$z<-z
x1<-c(1,2,3)
y1<-c(6,7,8)
z1<-c(10,12,13)
df_1<-data.frame(x1,y1,z1)
n<-length(df_1$x1)
df_pred<-data.frame(0,0,0)
names(df_pred)[1:3] <- c("x", "y", "z_pred")
for(i in 1:n)
{df_pred[i,]<-filter(df, x==df_1$x1[i], y==df_1$y1[i])}
sqm <- mean((df_pred[,3]-df_1[,3])^2)
我想計算的df_1的DF和Z1價值Z值之間的平方誤差。爲此,我使用循環來提取我需要從df開始的行,基於df_1的x1和y1值。 我問你是否有什麼不同的這個循環,做同樣的事情(使用,例如,dplyr包)。謝謝。
在一個側面說明'名(df_pred)[1:3] < - C( 「Y」, 「z_pred」 「X」)'只需要是名稱(df_pred)< - c(「x」,「y」,「z_pred」)'。 – lmo
你的'for'循環應該完成什麼?當我運行它時,我會遇到錯誤。 – lmo
另一方面說明,看起來您已經知道df_pred data.frame的大小。在這種情況下,預分配好得多:'df_pred <-data.frame(「x」= rep(0,n),「y」= rep(0,n),「z_pred」= rep 0,n))' – lmo