R中的地图调用深度似乎不太直观

时间:2019-08-14 00:23:56

标签: r tidyverse purrr

似乎R中的map函数的自然深度不是人们所期望的。

代表:

data = list(
  a =list(
    '1' <- c(1, 2),
    '2' <- c(3,4)
    ),
  b = list(
    '3' <- c(5,6),
    '4' <- c(7,8)
  ) 
)

我想将列表名称大写并打印出来,但这不起作用。

map(data, ~str_to_upper(names(.x)))

相反,我必须这样做:

map_depth(data,.depth = 0, ~str_to_upper(names(.x)))

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

https://sp.foo.net/sites/spdsdfrn/_api/web/GetFolderByServerRelativeUrl('/sites/spdsdfrn/Shared Documents/abc/2019')/Folders 的输入是基础列表,第一次迭代是

map

其中没有名称,因此失败。

通过时

data[[1]]
#[[1]]
#[1] 1 2

#[[2]]
#[1] 3 4

第一次迭代的输入是

map_depth(data,.depth = 0, ~str_to_upper(names(.x)))

具有名称,因此将其打印出来。

您可以直接使用

data[1]
#$a
#$a[[1]]
#[1] 1 2

#$a[[2]]
#[1] 3 4

或在基数R

stringr::str_to_upper(names(data))
#[1] "A" "B"