【问题标题】:How can I refer to data.frame columns in lapply?如何在 lapply 中引用 data.frame 列?
【发布时间】:2019-02-25 04:11:52
【问题描述】:

我想编写一个函数并使用lapply 自动运行一些具有不同协变量的模型。但我无法更改每个模型需要使用的变量。

bootstrap_vars <- list(vars1=c(1,2,3), vars2=c(2,3,4), vars3=c(1,3,4))

full_mod <- lm(Y ~ X[,full_vars])
getFstat <- function(Vars, X, Y, full_mod) {
   boot_mod <- lm(Y ~ X[,Vars], data=data)
   ano <- anova(full_mod, boot_mod, test="F")
   # cat("Variables:", Vars, ". F-stat: ", ano$F[2], "\n")
   ano$F[2] # Return F-statistic between full model and one bootstrap model
}
all_F <- unlist(lapply(bootstrap_vars, FUN = getFstat, X=X, Y=Y, full_mod=full_mod))

无法识别lapply 中的X 并显示anova 具有不同的boot_mod 和full_mod 数据集?我怎样才能让它工作?

【问题讨论】:

    标签: r dataframe lapply


    【解决方案1】:

    lapply 我们依次选择列表中的每个元素,例如list[[1]]list[[2]] 等...在您的情况下,您可以稍微更改函数的结构以使其工作(尽管我不能'不要测试它,因为您的示例不可重现):

    bootstrap_vars <- list(vars1=c(1,2,3), vars2=c(2,3,4), vars3=c(1,3,4))
    
    full_mod <- lm(Y ~ X[,full_vars])
    
    ## Function that will intake the variable Vars for list[[Vars]]
    getFstat <- function(Vars, Y, full_mod) {
       boot_mod <- lm(Y ~ Vars, data=data)
       ano <- anova(full_mod, boot_mod, test="F")
       # cat("Variables:", Vars, ". F-stat: ", ano$F[2], "\n")
       ano$F[2] # Return F-statistic between full model and one bootstrap model
    }
    all_F <- unlist(lapply(bootstrap_vars, FUN = getFstat, Y=Y, full_mod=full_mod))
    

    在这种情况下,你的函数基本上会运行:

    getFstat(bootstrap_vars[[1]], ...)
    getFstat(bootstrap_vars[[2]], ...)
    getFstat(bootstrap_vars[[3]], ...)
    

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2014-11-20
      • 2021-07-02
      • 1970-01-01
      相关资源
      最近更新 更多