【问题标题】:Using a vector inside a function as argument使用函数内的向量作为参数
【发布时间】:2017-01-31 10:36:39
【问题描述】:

我使用了一个名为 mplusObject 的函数,而不是包含一个文件名作为参数,我希望能够使用此代码运行一个循环并让 R 自动输入文件名(参见代码末尾的 VECTOR_1) .这是代码的简短简化版本:

mymodel <- mplusObject(
TITLE = "Some analysis;",
VARIABLE = "
  usevariables = x1 x2 x3 c_age c_agesq;",
MODEL = "
  att BY x1 x2 x3;
  att ON c_age c_agesq;",
SAVEDATA = "
  save = fscores; 
  file = VECTOR_1;",
  rdata = selectedgroup)

函数 mplusObject(在 MplusAutomation 包中)有几个参数,其中一个参数是它给出了用于保存模型生成的数据的文件名(接近上述代码的末尾)。我现在写的是 VECTOR_1,而不是文件名。

我想在函数外定义VECTOR_1 (VECTOR_1 &lt;- "filename")的内容。来自 Stata,我认为这很容易(通过使用类似于 Stata 所谓的本地宏的东西)。但是我在 R 上没有成功。我如何向 R 证明 VECTOR_1 是一个向量,不应该作为实际参数?

【问题讨论】:

    标签: r function vector arguments


    【解决方案1】:

    您可以将文件路径保存在矢量中

    myvector <- c("filepath1", "filepath2", ...)
    

    并使用lapply 循环遍历它以将所有输出保存在一个列表中:

    mymodels <- lapply(myvector, function(x) mplusObject(all other fixed arguments, file = x))
    

    【讨论】:

    • 感谢@Leo P.!我使用最多 30 的简单编号,“filename_1”...“filename_30”。我可以使用这样的东西,我从 1 到 30:myvector &lt;- paste("~/filename",i,sep="")
    • 尝试myvector &lt;- paste0("~/filename_", 1:30) 将“filename_1”改为“filename_30”
    • 非常感谢。我稍后会试试这个。如果它有效,我会指出它解决了我的问题。
    猜你喜欢
    • 2014-09-03
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多