के साथ चर के रूप में एकाधिक कॉलम का उपयोग करें मेरे पास dataframe
है और मैं एक ऐसा फ़ंक्शन लागू करना चाहता हूं जो तीन कॉलम के मान लेता है और तीन मानों के बीच न्यूनतम अंतर की गणना करता है।सैपली
#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))
}
मैं की तरह कुछ के लिए देख रहा हूँ:
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
मैं ddply उपयोग कर सकते हैं:
df2 <- ddply(df,.(a),function(r) {data.frame(min_distance=minimum_distance(r$a,r$b, r$c))}, .drop=FALSE)
इस कॉलम के सभी नहीं रखता। कोई सुझाव?
संपादित करें:
df$distance <- mapply(minimum_distance, df$a, df$b, df$c)
सरल और सुरुचिपूर्ण। धन्यवाद – zach
कौन सा सबसे तेज़ है? या अधिक कुशल? – Bharath