【问题标题】:How to use variable names as arguments如何使用变量名作为参数
【发布时间】:2013-09-30 17:14:38
【问题描述】:

对于家庭作业,我编写了一个执行前向逐步回归的函数。它需要 3 个参数:因变量、潜在自变量列表以及找到这些变量的数据框。目前,除了数据框(包括自变量列表)之外,我的所有输入都是字符串。

许多内置函数以及高配置包中的函数允许输入不是字符串的变量。哪种方式是最佳实践,为什么?如果非字符串是最佳实践,考虑到其中一个参数是数据框中变量的列表,而不是单个变量,我该如何实现?

【问题讨论】:

标签: r function arguments


【解决方案1】:

就我个人而言,如果使用字符串可以满足您的需要,我认为它没有任何问题。如果需要,您可以重写函数以将公式作为输入而不是字符串来指定自变量和因变量。在这种情况下,您的函数调用将如下所示:

fitmodel(x ~ y + z,data)

而不是这样:

fitmodel("x",list("y","z"),data)

使用公式可以让您指定要在回归中使用的变量的简单代数组合,例如x ~ y + log(z)。如果你走这条路,那么你可以通过调用model.frame来构建公式指定的数据框,然后使用这个新的数据框来运行你的算法。例如:

> df<-data.frame(x=1:10,y=10:1,z=sqrt(1:10))
> model.frame(x ~ y + z,df)
    x  y        z
1   1 10 1.000000
2   2  9 1.414214
3   3  8 1.732051
4   4  7 2.000000
5   5  6 2.236068
6   6  5 2.449490
7   7  4 2.645751
8   8  3 2.828427
9   9  2 3.000000
10 10  1 3.162278
> model.frame(x ~ y + z + I(x^2) + log(z) + I(x*y),df)
    x  y        z I(x^2)    log(z) I(x * y)
1   1 10 1.000000      1 0.0000000       10
2   2  9 1.414214      4 0.3465736       18
3   3  8 1.732051      9 0.5493061       24
4   4  7 2.000000     16 0.6931472       28
5   5  6 2.236068     25 0.8047190       30
6   6  5 2.449490     36 0.8958797       30
7   7  4 2.645751     49 0.9729551       28
8   8  3 2.828427     64 1.0397208       24
9   9  2 3.000000     81 1.0986123       18
10 10  1 3.162278    100 1.1512925       10
> 
猜你喜欢
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2021-11-07
  • 2020-08-14
  • 1970-01-01
相关资源
最近更新 更多