如何在 R 中使用 map 函数更改嵌套列表上的值

how to change value on nested list use map function in R

提问人:Reza AM 提问时间:8/17/2023 更新时间:8/17/2023 访问量:38

问:

需要帮助我有嵌套列表,我想将照片的所有值更改为空列表,列表如下:

df <- list(messaging = list (telegram = list (registered = 'true', photo = c(list()), LastSeen = '2023-03-03T01:54:31Z' ),
                             whatsapp = list (registered = 'true', photo = "dg872tg82f8gf782gf82", LastSeen = '2023-03-03T01:54:31Z', about = "John" ),
                             viber = list (registered = 'true', photo = "dg872tdewfrgggf782gf82", LastSeen = '2023-03-03T01:54:31Z', name = "John" )))

现在我像这样手动操作:

df$messaging$whatsapp$photo <- c(list())
df$messaging$viber$photo <- c(list())

我的输出期望如下图所示,但使用地图功能,因为在实际列表中将有很多嵌套列表

enter image description here

感谢您的帮助

r 嵌套列表 map-function

评论


答:

1赞 Mark 8/17/2023 #1
map(df, \(c1) map(c1, \(c2) map2(c2, names(c2), \(c3, n) if (n == "photo") c() else c3)))
  • 对于 DataFrame 的每个子级 (C1)(消息传递)
    • 对于 C1 (C2) 的每个孩子(Telegram、WhatsApp、Viber)

      • 每个孩子和 C2 (C3) 的姓名(注册、照片、最后见过等)

        • 如果名称 == “photo”,则返回 c()。否则,返回 c3