【发布时间】:2020-04-19 22:58:35
【问题描述】:
问题
我有这样的功能:
myfunc <- function(x){
a1 = 1
a2 = c(2,4)
a3 = data.frame(x = 1:10)
...
an = 'str'
res = list(a1 = a1,a2 = a2,..., an=an)
return(res)
}
如我们所见,我用一个命名列表返回我的结果。但是,如果元素的数量很大,我无法一一键入a_i = a_i。我使用下面的代码 sn-p 节省了一半的时间(但我仍然需要在元素名称周围输入",这是浪费时间):
res_short = sapply(c('a1','a2',...,'an'),FUN = function(x){list(get(x))})
return(res_short)
请注意,我的元素名称a1,a2,...,an 中可能不存在模式,我只是使用a1,a2...,an 来简化。 p>
我认为我返回一个命名列表很好,因为列表可以存储不同类型的元素。还有其他方法可以编写我的函数返回吗?我要清晰和省时!
【问题讨论】:
-
res_short = sapply(paste0("a",1:n),function(x){list(get(x))}) ?
-
但是如果你必须计算 a1.. an,你可以从 list(a1 =.., a2 = ..., a3 ..) 开始。我错过了什么重要的东西吗?
-
@StupidWolf 感谢您的回复。假设我有 10 个名称复杂的元素,
list(a1=..,a2=..)需要输入两次 'a1',我认为这是浪费时间。 -
R 中不需要
return——函数的最后一个表达式就是它的返回值。