【问题标题】:how to for loop a variable inside an R functon如何在R函数中循环变量
【发布时间】:2015-08-22 10:42:42
【问题描述】:

我是 R 新手。现在我正在处理 R 包 GWmodel。

查看基本 GWR 的函数,如下所示:

gwr.res <- gwr.basic(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl + LowEduc + Age18_24 + Age25_44 + Age45_64, data = Dub.voter, bw = 100,  kernel = "bisquare", adaptive = TRUE, F123.test = TRUE)

我需要收集每个变量的估计参数的平均值,并将其附加到任何给定 bw(带宽)值的列表中。

在 python 术语中,这将是这样的:

LARentMean = []
SC1Mean = []
UnenmplMean = []
LowEducMean = []
Age18_24Mean = []
Age25_44Mean = []
Age45_64Mean = []


for i in range (20,400):
    gwrres = gwr.basic(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl + LowEduc + Age18_24 + Age25_44 + Age45_64, data = Dub.voter, bw = i,  kernel = "bisquare", adaptive = TRUE, F123.test = TRUE)
    a = gwrres(LARent).mean()    #a <- mean(gwrres$SDF$LARent)
    b = gwrres(SC1).mean()       #b <- mean(gwrres$SDF$SC1)
    c = gwrres(Unenmpl).mean()   #c <- mean(gwrres$SDF$Unempl)
    d = gwrres(lowEduc).mean()   #d <- mean(gwrres$SDF$LowEduc)
    e = gwrres(Age18_24).mean()  #e <- mean(gwrres$SDF$Age18_24)
    f = gwrres(Age25_44).mean()  #f <- mean(gwrres$SDF$Age25_44)
    g = gwrres(Age45_64).mean()  #g <- mean(gwrres$SDF$Age45_64)
    LARentMean.append(a)
    SC1Mean.append(b)
    UnenmplMean.append(c)
    LowEducMean.append(d)
    Age18_24Mean.append(e)
    Age25_44Mean.append(f)
    Age45_64Mean.append(g)

【问题讨论】:

  • 您能否添加一些示例数据以及您希望结果的样子?当您编写列表时,我怀疑您可能指的是数据框。
  • 您已经找到了解决方案。所以,我不确定你的目标是什么。
  • 函数模型的输出是对象,大多数时候是一种特殊的类,具有下面的列表结构,因此最有可能保存您正在寻找的参数只是子集的问题,并且知道如何和在对象内部,您必须在哪里找到。这就是为什么 reproducible example 在这种情况下会很棒。

标签: python r for-loop gwmodel


【解决方案1】:

你可以使用 lapply 来循环到一个列表,例如:

l = lapply(20:400, function(i){
    gwr.basic(GenEl2004 ~ DiffAdd + LARent + SC1 + Unempl + LowEduc + 
        Age18_24 + Age25_44 + Age45_64, data=Dub.voter, bw=i,
        kernel="bisquare", adaptive=T, F123.test=T)
})

我不知道 gwr.basic 生成什么作为输出,因此您可能需要额外的一行来仅取平均值(如果它提供更多信息)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2015-08-10
    相关资源
    最近更新 更多