【问题标题】:Concatenate items within function that return a list连接函数内返回列表的项目
【发布时间】:2020-02-24 14:28:43
【问题描述】:

我正在创建一个包含一个函数的包,该函数返回一个包含多个名称 (weight_, height_, bmi_) 的列表,每个名称重复后缀为 0 到 50 之间的数字。例如,该函数将返回一个列表 "weight_0"..."weight_50", “height_0”...“height_50”、“bmi_0”...“bmi_50”。

如何在下面的函数中嵌套另一个函数来创建这些新名称,而不必将它们全部列出

myfunction <- local(function() {
return(c("weight_0", "height_0", "bmi_0"
  ))
})

【问题讨论】:

    标签: r function data-manipulation


    【解决方案1】:

    你也可以试试outer,即

    as.vector(outer(outs, 0:50, paste, sep = '_'))
    

    【讨论】:

    • 谢谢 是否可以在 myfunction 中合并粘贴功能,而不创建输出向量?
    • 类似return(as.vector(outer(c('weight', 'height', 'bmi'), 0:50, paste, sep = '_')))??
    【解决方案2】:

    您可以使用以下代码实现此目的

    outs = c("weight", "height", "bmi")
    unlist(lapply(outs,function(x) paste0(x,"_",0:50)))  
    

    在这里,我们将outs 中的每个元素粘贴到从 0 到 50 的数字中。这将为 outs 中的每个元素创建一个包含向量的列表,然后我们将其取消列出到单个向量中。

    另一种选择(可能更快):

    paste0(rep(outs,each=51),"_",rep(0:50))
    

    【讨论】:

    • 谢谢你的帮助,有没有办法让我在 myfunction 中完成这项工作?
    • 你可以简单的把最后一行代码放在return()里面
    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多