代码之家  ›  专栏  ›  技术社区  ›  Wang

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

  •  0
  • Wang  · 技术社区  · 7 年前

    假设我有一个R函数:

    x <- function(x) {
      x <- substr(x, 1, 1)
      return(x)
    }
    

    如果我跑步

    x(abc)
    

    我会得到

    [1] "a"
    

    为了允许我的函数运行列表,即。 a = list('aas', 'cvs', 'mmm')

    我可以使用“lappy”函数

    lapply(a, x)
    

    但是如何将lappy()函数合并到我的函数中,以允许我的函数直接运行列表?

    i、 e.:

    x(a)
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Jordi    7 年前

    您可以使用以下技巧:

    fun <- function(x) {
        if (is.list(x)) {
            return(lapply(x, fun))
        }
      x <- substr(x, 1, 1)
      return(x)
    }
    

    如果希望函数返回字符向量而不是列表,请替换 lapply 具有 sapply . 如果希望它也接受向量作为输入,请更改条件 is.list(x) length(x) > 1

        2
  •  1
  •   s_baldur    7 年前
    new_function <- function(x) {
      lapply(x, substr, 1, 1)
    }