【发布时间】:2019-09-08 09:12:56
【问题描述】:
我有以下列表:
my_list = list(alpha = list('hi'),
beta = list(1:4, 'how'),
gamma = list(TRUE, FALSE, 'are'))
str(my_list)
List of 3
$ alpha:List of 1
..$ : chr "hi"
$ beta :List of 2
..$ : int [1:4] 1 2 3 4
..$ : chr "how"
$ gamma:List of 3
..$ : logi TRUE
..$ : logi FALSE
..$ : chr "are"
我想弄清楚每个 1 级元素中包含哪些数据类型。为此,我可以使用以下管道:
piped = map(my_list, ~map(., class) %>% unique %>% unlist)
str(piped)
List of 3
$ alpha: chr "character"
$ beta : chr [1:2] "integer" "character"
$ gamma: chr [1:2] "logical" "character"
...按预期工作。但是当我尝试将对unique 的调用嵌套在unlist() 中时,我得到了一些不同的结果:
composite = map(my_list, ~map(., class) %>% unlist(unique(.)))
str(composite)
List of 3
$ alpha: chr "character"
$ beta : chr [1:2] "integer" "character"
$ gamma: chr [1:3] "logical" "logical" "character"
有人可以帮我理解为什么这两种方法不等效吗?
【问题讨论】:
-
我认为点的两种用法在不同的范围内,导致了意想不到的行为,但不能完全梳理出来。
-
感谢您的意见@pgcudahy,我尝试使用
unique(.x)代替unique(.),但得到了相同的结果。
标签: r data-manipulation purrr