gpt4 book ai didi

r - 将函数参数传递给 ddply

转载 作者:行者123 更新时间:2023-12-01 13:11:23 25 4
gpt4 key购买 nike

我知道那里有各种类似的问题,因此我为重复而道歉。也就是说,虽然我找到了关于这个主题的有用信息,但我尝试过的任何事情似乎都没有用。

简而言之,我在函数内部使用 ddply,并尝试将参数从函数传递给 ddply 中的函数。

使用 iris 数据集的简化示例

IG_test <-function(data, feature){
dd<-ddply(data, feature, here(summarise), N=length(feature))
return(dd)
}

IG_test(iris, "Species")

这应该返回每个物种的记录数,但在每种情况下都返回 1。

如果我直接在 length() 中指定“物种”,我就会得到我要找的东西

IG_test <-function(data, feature){
dd<-ddply(data, feature, here(summarise), N=length(Species))
return(dd)
}

IG_test(iris, "Species")

Species N
1 setosa 50
2 versicolor 50
3 virginica 50

描述类似问题的最新问题建议对 ddply 中的 summarize() 函数使用 here(),以便告诉 ddply 到哪里寻找变量。这在找到 feature 时起作用(没有 here() 我们会收到错误),但是它不会按预期返回长度。

有什么想法吗?

最佳答案

您正在将字符串名称“Species”传递给 ddply 函数。所以你应该在里面得到它的值(value)。然后ddply识别列名

library(plyr)
IG_test <-function(data, feature){
dd<-ddply(data, feature, here(summarise), N=length(get(feature)))
return(dd)
}

IG_test(iris, "Species")

关于r - 将函数参数传递给 ddply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463340/

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