首页 > 解决方案 > 在 R 中,如何创建命名列表和动态生成变量的函数

问题描述

我需要一个(大量)变量的函数和一个为这些变量提供初始值的命名列表。这将用作 R 中 mle2 函数的输入。

分配对我没有帮助,因为我需要调用变量,而不仅仅是给它们值。我可以使用名称创建一个列表或向量,但我似乎无法将它们识别为变量。我已经尝试过使用和不使用 get 的代码,直接在 startlist 中尝试了 paste 命令以及许多其他类似的迭代。

    # This is an example with 4 variables that works:

    fun.long<-function(p1,p2,p3,p4) {
      p1+p2+p3+p4}

    startlist<-list(p1=0.5,p2=0.5,p3=0.5,p4=0.5)


    # Since I have way more than 4 variables I'd like to automate this.
    # what I had hoped for was something like:

    varname<-list()
    for (i in 1:4) {
    varname<-cbind(varname,paste0("p", i))}

    fun.long<-function(MyList) {
      q=0
      for (i in 1:4) {
        q=q+get(MyList[i])}
        return(q)}

    startlist<-list()
    for (i in 1:4) {
      startlist<-cbind(startlist,get(varname[i])=0.5)}

我本来想fun.long(varname)输出,p1+p2+p3+p4而不是我得到:Error in get(varname[i]) : invalid first argument

startlist想要打印命令:

$p1
[1] 0.5

$p2
[1] 0.5

$p3
[1] 0.5

$p4
[1] 0.5

相反,我得到:

Error: unexpected '=' in:
for (i in 1:4) {
  startlist<-cbind(startlist,get(varname[i])=

标签: rlistfunction

解决方案


推荐阅读