использовать несколько столбцов в качестве переменных с sapply

У меня есть 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)
31
задан Abel 10 April 2012 в 12:42
поделиться