gpt4 book ai didi

r - 在 randomForest 包的 partialPlot 中使用变量名作为参数

转载 作者:行者123 更新时间:2023-12-04 13:50:03 29 4
gpt4 key购买 nike

我正在使用一个具有函数 f 的库。该函数接受几个参数:对象、数据框和数据框中列的名称。如果我手动调用它,它可以毫无问题地工作。我这样调用它:

f(my_object, my_dataframe, 'A')

但是,如果我将“A”放入变量中,它就不起作用了!澄清一下,我只是这样做:

g = 'A'    
f(my_object, my_dataframe, g)

我得到一个错误(选择了未定义的列)。我试过谷歌搜索来解决这个问题,但没有运气。如果有人可以提供帮助,我将不胜感激。


编辑:我在 randomForest 库中使用 partialPlot 命令。这正是我输入的内容:

partialPlot(r,x,'pH')

这行得通!接下来,我将“pH”分配给一个变量并尝试完全相同的函数:

g = 'pH'    
partialPlot(r,x,g)

这不起作用,我收到以下错误:

Error in '[.data.frame'(pred.data, , xname) : undefined columns selected

我还可以验证 g 是我认为的:

print(g)
#[1] "pH"

class(g)
#[1] "character"

最佳答案

尝试

g = quote(pH)
partialPlot(r,x,g)

罪魁祸首是 randomForest:::partialPlot.randomForest 中的以下片段

x.var <- substitute(x.var)
xname <- if (is.character(x.var))
x.var
else {
if (is.name(x.var))
deparse(x.var)
else {
eval(x.var)
}
}

有关更多背景信息,请参阅 stackoverflow.com/q/9860090/1201032


早期尝试(仅交互工作):

partialPlot(r,x,c(g)) 应该可以工作。用 c(g) 代替 g 可以使 is.name(x.var) 返回 FALSE 因此执行 eval 而不是 deparse

关于r - 在 randomForest 包的 partialPlot 中使用变量名作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939254/

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