gpt4 book ai didi

r - sapply使用多列作为变量

转载 作者:行者123 更新时间:2023-12-03 08:54:01 25 4
gpt4 key购买 nike

我有一个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)

最佳答案

试试mapply():

qq <- mapply(minimum_distance, df$a, df$b, df$c)

关于r - sapply使用多列作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com