R 在TIBLE中,通过改变新的列表列从命名列表中提取名称
我有一个TIBLE列表列。其中一个(我们称之为R 在TIBLE中,通过改变新的列表列从命名列表中提取名称,r,dplyr,purrr,tibble,R,Dplyr,Purrr,Tibble,我有一个TIBLE列表列。其中一个(我们称之为infocolumn)包含命名列表。对于TIBLE的每一行,我想修改一个新的列表列,该列将包含一个向量(嵌套)。该向量的元素将对应于相邻“info”列表列中命名列表的名称 例子 我的歌我的歌 ###tibble:4 x 2 ##变量名称信息 ## ##1艺术品 ##2体育 ##3独立性 ##4性别 期望输出 var_name info name_of 1件艺术品#c(“文森特·梵高”、“莱昂纳多·达芬奇”、
info
column)包含命名列表。对于TIBLE的每一行,我想修改一个新的列表列,该列将包含一个向量(嵌套)。该向量的元素将对应于相邻“info
”列表列中命名列表的名称
例子
我的歌我的歌
###tibble:4 x 2
##变量名称信息
##
##1艺术品
##2体育
##3独立性
##4性别
期望输出
var_name info name_of
1件艺术品#c(“文森特·梵高”、“莱昂纳多·达芬奇”、“约翰尼斯·弗米尔”、“桑德罗·波提切利”、“格兰特·伍德”)
2体育类(“似乎无效”)
3独立#c(177618181956)
4性别(“男性”、“女性”)
我的尝试
我想改变一个新的列表列,它检查info
列。如果info
不是NULL
,则新列表列将包含一个向量,该向量包含嵌套在info
中的列表名称;否则,在mutated list列中放入一个字符串“似乎为空”
库(dplyr)
图书馆(purrr)
我的可存储%>%
mutate(names\u of=map\u chr(info,~ifelse(is.null(.x),“似乎\u null”,names(.x)))
###tibble:4 x 3
##变量名称信息名称
##
##1艺术作品文森特·梵高
##2体育似乎是空的
##3独立1776
##4性别男性
不幸的是,这只返回info
中列表中的名字
我还尝试使用pmap()
,如中所示,但不起作用:
我的列表%>%
mutate(names_of=map_chr(info、~ifelse(is.null(.x)、list(“似乎为null”)、pmap(.x、names(.x)[c(…)]))
错误:mutate()
无效下标
键入“列表”
我输入的名称是map\u chr(…)
我将感谢任何帮助 按如下方式逐行执行计算:
res <- my_tibble %>%
rowwise %>%
mutate(names_of = list(if (is.null(info)) "seems_null" else names(info))) %>%
ungroup
res%
行%>%
mutate(names\u of=list(如果(is.null(info))“似乎\u null”或者names(info)))%>%
解组
给予:
> res
# A tibble: 4 x 3
var_name info names_of
<chr> <list> <list>
1 artworks <named list [5]> <chr [5]>
2 sports <NULL> <chr [1]>
3 independence <named list [3]> <chr [3]>
4 gender <named list [2]> <chr [2]>
>res
#一个tibble:4x3
变量名称信息名称
1艺术品
2体育
3独立性
4性别
啊!很好。这并不是说它太关键,但您是否看到了一种“自然”将names\u of
变成dbl
向量而不是第3行的chr
的方法?在回答中,将names(info)
替换为type.convert(names(info))
。