R 在我的函数中加入lappy。递归?

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

假设我有一个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_function
new_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)
}