i habe dieses Skript:Alternative zu for-Schleife in 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)
Ich mag den quadratischen Fehler zwischen dem Z-Wert von df und z1 Wert von df_1 berechnen. Um dies zu tun, benutze ich eine Schleife für die Extraktion der Zeilen, die ich von df brauche, basierend auf x1 und y1 Werten von df_1. Ich frage Sie, ob es etwas anderes für diese for-Schleife gibt, um das gleiche zu tun (zB mit dplyr-Paket). Vielen Dank.
Auf einer seitlichen Anmerkung 'Namen (df_pred) löst [1: 3] <- c ("x", "y", "z_pred")' nur muss 'names (df_pred) <- c (" x "," y "," z_pred ")' sein. – lmo
Was soll deine 'for' Schleife erreichen? Wenn ich es laufe, bekomme ich Fehler. – lmo
Auf einer zweiten Randnotiz scheint es, dass Sie bereits die Größe Ihres df_pred data.frame kennen. In dieser Situation ist es viel besser, sie vorher zuzuweisen: 'df_pred <-data.frame (" x "= rep (0, n)," y "= rep (0, n)," z_pred "= rep (0, n)) ' – lmo