在我的功能中加入lapply。递归?

时间:2018-03-15 13:48:18

标签: r function lapply

假设我有一个R函数:

var requestOptions = new RequestOptions()
    .Apply(RequestOptions.SkipMemoryCacheOf(true))
    .Apply(RequestOptions.DiskCacheStrategyOf(DiskCacheStrategy.None))
    .Apply(RequestOptions.SignatureOf(new ObjectKey(DateTime.Now.Millisecond)));

Glide.With(this)
    .Load(imgUri)
    .Apply(requestOptions)
    .Into(_imageView);

如果我跑

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

我会得到

x(abc)

为了让我的功能能够运行一个列表,即[1] "a"

我可以使用&#39; lapply&#39;功能

a = list('aas', 'cvs', 'mmm')

但是如何将lapply()函数合并到我的函数中以便让我的函数直接运行一个列表?

即:

lapply(a, x)

2 个答案:

答案 0 :(得分:3)

您可以使用以下技巧:

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

答案 1 :(得分:1)

new_function <- function(x) {
  lapply(x, substr, 1, 1)
}