benutze mehrere Spalten als Variablen mit sapply
Ich habe eindataframe
und ich möchte eine Funktion anwenden, die die Werte von drei Spalten nimmt und die minimale Differenz zwischen den drei Werten berechnet.
<code>#dataset df <- data.frame(a= sample(1:100, 10),b = sample(1:100, 10),c= sample(1:100, 10)) #function minimum_distance <- function(a,b,c) { dist1 <- abs(a-b) dist2 <- abs(a-c) dist3 <- abs(b-c) return(min(dist1,dist2,dist3)) } </code>
Ich suche etwas wie:
<code>df$distance <- sapply(df, function(x) minimum_distance(x$a,x$b,x$c) ) ## errormessage Error in x$a : $ operator is invalid for atomic vectors </code>
Während ich ddply benutzen kann:
<code>df2 <- ddply(df,.(a),function(r) {data.frame(min_distance=minimum_distance(r$a,r$b, r$c))}, .drop=FALSE) </code>
Dadurch bleiben nicht alle Spalten erhalten. Irgendwelche Vorschläge?
Bearbeiten: Ich endete mit:
<code>df$distance <- mapply(minimum_distance, df$a, df$b, df$c) </code>