如何在属性名称不同的for循环中对S4对象进行子集化?

问题描述

我正在使用relaimpo软件包来获取线性模型中变量的相对重要性。函数calc.relimp()使用几种可能的方法计算相对重要性。我想比较在我使用的数据集上使用每种方法的结果。

calc.relimp()函数返回一个S4对象。为了仅访问相对重要性列表,我将函数输出保存到变量名rel.imp <- calc.relimp(blah)中。在我认为是S4对象的属性下列出了重要性,该属性与所使用的计算方法同名。因此,如果使用“ lmg”方法,则可以使用rel.imp$lmg获得使用该方法计算出的变量重要性。

我遇到的问题是当我尝试使用for循环使用每种方法比较结果来计算重要性时。见下文:

library(relaimpo)
types <- c("lmg","last","first","betasq","pratt","genizi","car")

for (tp in types) {
  rel.imp <- calc.relimp(model,type = tp,rela = T)
  print(rel.imp$tp)
}

此循环在第一次迭代期间返回以下错误Error in h(simpleError(msg,call)) : error in evaluating the argument 'x' in selecting a method for function 'print': no slot of name "tp" for this object of class "relimplm"

相对于relimplm对象进行引用时,每次应为不同字符串的字符串,即“ lmg”,“ last”等,按字面值评估为“ tp”,即向量中每个字符串的抽象名称我正在尝试迭代。

如果我使用的是数据框,但没有用,我将尝试使用dplyr中的select()。但是对象不能被强制转换为数据框,因此我必须找到另一种数据类型将其转换为或学习如何在for循环中使用S4对象。我想要的是使用每种方法的相对重要性列表。实现该结果的最佳方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)