R 在我的函数中加入lappy。递归?
假设我有一个R函数:R 在我的函数中加入lappy。递归?,r,function,lapply,R,Function,Lapply,假设我有一个R函数: x <- function(x) { x <- substr(x, 1, 1) return(x) } 我会得到 [1] "a" 为了允许我的函数运行列表,即a=list('aas','cvs','mmm') 我可以使用“lappy”函数 lapply(a, x) 但是如何将lappy()函数合并到我的函数中,以允许我的函数直接运行列表 i、 e: new_functionnew_function您可以使用以下技巧: fun <- funct
x <- function(x) {
x <- substr(x, 1, 1)
return(x)
}
我会得到
[1] "a"
为了允许我的函数运行列表,即a=list('aas','cvs','mmm')
我可以使用“lappy”函数
lapply(a, x)
但是如何将lappy()函数合并到我的函数中,以允许我的函数直接运行列表
i、 e:
new_functionnew_function您可以使用以下技巧:
fun <- function(x) {
if (is.list(x)) {
return(lapply(x, fun))
}
x <- substr(x, 1, 1)
return(x)
}
fun您可以使用以下技巧:
fun <- function(x) {
if (is.list(x)) {
return(lapply(x, fun))
}
x <- substr(x, 1, 1)
return(x)
}
fun您的函数已经可以在字符串向量上运行,请尝试x(c('abc','def')
。当x(a)
可以完成任务时,为什么需要lappy
?@maRmat,MKR,这只是一个示例。我想知道如何将lappy合并到函数中,并调用此函数。您可以使用Vectorize()
若要创建一个新函数,该函数是初始函数的矢量化版本。它将创建一个基本上是函数的一部分的新函数。未检查此注释。因此,删除了我的答案。您的函数已经可以处理字符串向量,请尝试x(c('abc','def'))
。当x(a)
将完成这项工作时,您为什么需要lappy
呢?@maRmat,MKR,这只是一个例子。我想知道如何将lappy合并到一个函数中,并调用此函数。您可以使用Vectorize()
创建一个新函数,它是初始函数的矢量化版本。它将创建一个新函数,基本上是函数的一部分。没有检查此注释。因此,删除了我的答案。@Jordi,非常感谢。这叫做递归吗?很高兴它有帮助!是的,你可以在函数引用的意义上调用此递归对它自己。@Jordi,非常感谢。这叫做递归吗?很高兴它有帮助!是的,你可以在函数引用自身的意义上调用这个递归。
new_function <- function(x) {
lapply(x, substr, 1, 1)
}
fun <- function(x) {
if (is.list(x)) {
return(lapply(x, fun))
}
x <- substr(x, 1, 1)
return(x)
}