代码之家  ›  专栏  ›  技术社区  ›  Roman LuÅ¡trik

仅将apply()应用于深度嵌入的列表元素

  •  1
  • Roman LuÅ¡trik  · 技术社区  · 14 年前

    我只想将我的函数应用于列表结构中更深层次的元素。

    例如,我只想将某个函数应用于列出二阶元素。使用apply()是否可行?

    > str(l)
    List of 3
     $ :List of 2
      ..$ : num 5
      ..$ : num 10
     $ :List of 2
      ..$ : num 15
      ..$ : num 20
     $ :List of 2
      ..$ : num 25
      ..$ : num 30
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Marek    14 年前

    使用双 lapply

    L <- list(
        list(rnorm(10),rnorm(10)),
        list(c(rnorm(10),NA),rnorm(10)),
        list(rnorm(10),rnorm(10))
        )
    str(L)
    
    L_out <- lapply(L, lapply, function(x) c(max(x),mean(x), mean(x,na.rm=TRUE)))
    str(L_out)
    # List of 3
    #  $ :List of 2
    #   ..$ : num [1:3] 0.958 0.127 0.127
    #   ..$ : num [1:3] 0.981 -0.262 -0.262
    #  $ :List of 2
    #   ..$ : num [1:3] NA NA -0.443
    #   ..$ : num [1:3] 1.126 -0.504 -0.504
    #  $ :List of 2
    #   ..$ : num [1:3] 1.432 -0.174 -0.174
    #   ..$ : num [1:3] 1.102 -0.311 -0.311
    
        2
  •  -1
  •   Ingo    14 年前

    不知道“r”,但我确信您可以应用一个应用您的函数。 让你的功能是F,然后改为应用F写应用(应用F)

    在哈斯凯尔

    data = [[5,10], [15,20], [25,3]]
    

    假设我们想给每个数字加1:

    map (map (+1)) data