繁体   English   中英

将 function 应用于嵌套列表的某个元素

[英]Apply function to a certain element of a nested list

我想从嵌套列表的特定元素中减去一个。 我该怎么做?

这是我的嵌套列表,我想从条形向量的正值中获取一个(首先检查它是否为正)

x <- 列表(a = 列表(foo = 1:8,bar = 3:4),b = 列表(baz = 5:6))

我在想 map function。

谢谢!

你可以写一个递归的 function:

mod_at <- function(x, name, FUN){
  if(name %in% names(x)){ 
    x[[name]] <- FUN(x[[name]])
    x
  }
  else if(is.list(x))lapply(x, mod_at, name, FUN)
  else x
}

现在用它来修改列表:

mod_at(x, "bar", function(x)ifelse(x>0, x-1, x))

$a
$a$foo
[1] 1 2 3 4 5 6 7 8

$a$bar
[1] 2 3


$b
$b$baz
[1] 5 6

您可以按照自己的方式使用 function:

mod_at(x, "baz", sqrt)

$a
$a$foo
[1] 1 2 3 4 5 6 7 8

$a$bar
[1] 3 4


$b
$b$baz
[1] 2.236068 2.449490

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM