gpt4 book ai didi

r 函数调用带有子集的 lm

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

我正在编写一些代码,我发现了一些奇怪的东西。当我在某些面板数据的子集上运行 LM 时,它运行良好,如下所示:

library('plm')
data(Cigar)
lm(log(price) ~ log(pop) + log(ndi), data=Cigar, subset=Cigar$state==1)

Call:
lm(formula = log(price) ~ log(pop) + log(ndi), data = Cigar,
subset = Cigar$state == 1)


Coefficients:
(Intercept) log(pop) log(ndi)
-26.4919 3.2749 0.4265

但是当我尝试将其包装在一个函数中时,我得到:

myfunction <- function(formula, data, subset){
return(lm(formula, data, subset))
}

myfunction(formula = log(price) ~ log(pop) + log(ndi), data = Cigar, subset = Cigar$state==1)

Error in xj[i] : invalid subscript type 'closure'

我真的不明白这里发生了什么,但它破坏了我编写的其他一些代码,所以我想知道。

最佳答案

问题似乎不在于子集。当我更改为 subset = (state == 1) 时,我从你的函数中得到了同样的错误。您的函数的参数未正确传递和评估。

我认为你最好使用 do.call

myfunction <- function(formula, data, subset) {
do.call("lm", as.list(match.call()[-1]))
}

myfunction(log(price) ~ log(pop) + log(ndi), Cigar, state == 1)
# Call:
# lm(formula = log(price) ~ log(pop) + log(ndi), data = Cigar,
# subset = state == 1)
#
# Coefficients:
# (Intercept) log(pop) log(ndi)
# -26.4919 3.2749 0.4265

关于r 函数调用带有子集的 lm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27640085/

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