R:如何在取消嵌套双重嵌套小标题时保留名称?

2024-01-05

目前,我正在尝试弄清楚如何在取消嵌套时将内部列表和其他列表的名称保留在小标题中。

The .id的参数unnest函数是我发现的最接近的,但它开始对值进行编号,而不是使用给定的名称。

这是一个 MWE,其中包含我对最后一个小标题的想法:

library(dplyr)
library(tidyr)

df.1 <- tibble(
  x = list("Foo","Bar"),
  y = list(
    list(a = list(aa = 1, ab = 2), b = list(ba = 6, bb = 22)),
    list(c = list(ca = 561, cb = 35), d = list(da = 346, db = 17))
  )
)

df.2 <- unnest(df.1, .id = "name.outher")
df.3 <- unnest(df.2, .id = "name.inner")

# How do I get from this:
#
#-----------------------------------------------------------------------
#  x  |                              y                                 |
#-----+----------------------------------------------------------------+
# Foo | list(a = list(aa = 1, ab = 2), b = list(ba = 6, bb = 22))      |
#-----+----------------------------------------------------------------+
# Bar | list(c = list(ca = 561, cb = 35), d = list(da = 346, db = 17)) |
#-----------------------------------------------------------------------
#
# to this:
#
#---------------------------------------
#  x  | name.outher | y   | name.inner |
#-----+-------------+-----+------------+
# Foo |      a      | 1   |     aa     |
#-----+-------------+-----+------------+
# Foo |      a      | 2   |     ab     |
#-----+-------------+-----+------------+
# Foo |      b      | 6   |     ba     |
#-----+-------------+-----+------------+
# Foo |      b      | 22  |     bb     |
#-----+-------------+-----+------------+
# Bar |      c      | 561 |     ca     |
#-----+-------------+-----+------------+
# Bar |      c      | 35  |     cb     |
#-----+-------------+-----+------------+
# Bar |      d      | 346 |     da     |
#-----+-------------+-----+------------+
# Bar |      d      | 17  |     db     |
#-------------------------------------
# 
# instead of this:
#
#---------------------------------------
#  x  | name.outher | y   | name.inner |
#-----+-------------+-----+------------+
# Foo |      1      | 1   |     1      |
#-----+-------------+-----+------------+
# Foo |      1      | 2   |     1      |
#-----+-------------+-----+------------+
# Foo |      1      | 6   |     2      |
#-----+-------------+-----+------------+
# Foo |      1      | 22  |     2      |
#-----+-------------+-----+------------+
# Bar |      2      | 561 |     3      |
#-----+-------------+-----+------------+
# Bar |      2      | 35  |     3      |
#-----+-------------+-----+------------+
# Bar |      2      | 346 |     4      |
#-----+-------------+-----+------------+
# Bar |      2      | 17  |     4      |
#---------------------------------------

您知道如何在取消嵌套此数据结构的同时保留名称吗?


We can melt

library(reshape2)
library(dplyr)
df.1 %>% 
   .$y %>% 
   melt %>%
   select(x = L1, name.outher = L2, y = value, name.inner = L3)
#  x name.outher   y name.inner
#1 1           a   1         aa
#2 1           a   2         ab
#3 1           b   6         ba
#4 1           b  22         bb
#5 2           c 561         ca
#6 2           c  35         cb
#7 2           d 346         da
#8 2           d  17         db

Or use map and as_tibble

library(tidyverse)
df.1 %>%
   pull(y) %>% 
   map_df(~ as_tibble(.x) %>%
                map_df(~as_tibble(.x) %>%
                    gather(name.inner, y), .id = 'name.outer'),
     .id = 'x')
# A tibble: 8 x 4
#  x     name.outer name.inner     y
#  <chr> <chr>      <chr>      <dbl>
#1 1     a          aa             1
#2 1     a          ab             2
#3 1     b          ba             6
#4 1     b          bb            22
#5 2     c          ca           561
#6 2     c          cb            35
#7 2     d          da           346
#8 2     d          db            17
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:如何在取消嵌套双重嵌套小标题时保留名称? 的相关文章

  • 从 foreach 循环赋值

    我想并行化一个循环 例如 td lt data frame cbind c rep 1 4 2 rep 1 5 rep 1 10 2 names td lt c val id res lt rep NA NROW td for i in l
  • 将值添加到 rCharts hPlot 工具提示

    我想通过 rCharts 向标准 Highcharts 工具提示添加一些额外的值 示例代码 require rCharts df lt data frame x c 1 5 y c 5 1 z c A B C D E name c K L
  • dplyr :过滤一系列行(在一列中)

    虚拟数据框 id family lt c 1 1 2 2 3 3 people lt c male female male female male children dataset lt data frame id family peopl
  • 更改列的顺序

    我正在处理一个包含 gt 40 列的大型数据框 我希望能够移动列 而不必指定所有列名称 例如 a lt c 1 5 b lt c 4 3 2 1 1 Percent lt c 40 30 20 10 10 Labels lt c Cat D
  • 如何在 conda 中静音或抑制 gfortran (或 clang?)后端?

    我一直致力于构建一个非常特殊的 conda 环境 专为python and R与串扰使用rpy2 我想出的方法可以安装正确的R包如下 install main environment sh now date T echo Start Tim
  • 将阿拉伯文本分配给 R 变量

    R 无法正确显示阿拉伯文本 当我使用阿拉伯语时 我得到了非常奇怪的东西 这是一个屏幕截图 问题是我想创建一个带有阿拉伯文本的词云 我需要首先解决这个问题 R 版本 R 2 15 2 GUI 1 53 Leopard 版本 64 位 6335
  • 使用 gbuffer 在 R 中缓冲(地理)空间点

    我正在尝试缓冲数据集中半径为 100 公里的点 我正在使用该功能gBuffer从包装中rgeos 这是我到目前为止所拥有的 head sampledf postalcode lat lon city province 1 A0A0A0 47
  • R中不同级别的李克特分组

    我想使用 Likert 包 并按变量分组并绘制结果 问题是我想要可视化的变量有不同的级别 有没有解决的办法 一个简单的例子来说明我的问题 library reshape library likert foo lt data frame ca
  • 如何从类外部更改公共 R6 类方法?

    我希望能够在我的 R6 类中重新定义公共方法 以便它根据该类保存的数据类型进行更改 如下所示 library R6 Simple lt R6Class Simple public list dt mtcars my print functi
  • 如何在ggplot2中使用希腊符号?

    我的类别需要用希腊字母命名 我在用ggplot2 并且它与数据配合得很好 不幸的是 我无法弄清楚如何将这些希腊符号放在 x 轴上 在刻度线处 并使它们出现在图例中 有什么办法可以做到吗 更新 我看了一下link https github c
  • Rglpk - 梦幻足球阵容优化器 - For 循环输出的 Rbind

    我有一个使用 Rgplk 的梦幻足球阵容优化器 它使用for循环生成多个最佳阵容 其数量由用户输入 代码如下 Lineups lt list for i in 1 Lineup no matrix lt rbind as numeric D
  • 为 ggplot 定义新的尺度轴变换

    我正在尝试创建一个squared使用 y 轴变换scales trans new但遇到错误 MWE data data frame x 1 10 y runif 10 z rnorm 10 10 library ggplot2 ggplot
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t
  • r - 从我的应用程序下载shinyapps代码

    我正在尝试从shinyapps io 在另一台电脑上下载我的shiny 应用程序代码 我按照这个例子 https support rstudio com hc en us articles 204536588 从 shinyapps io下
  • 用闪亮的 R 设计 DT 中的展开行按钮

    我正在尝试设计 DT 中可用的展开行按钮的样式 样式可用here https datatables net examples api row details html 我用于创建数据表的代码是 library DT datatable cb
  • 如何使用 tidyr 将向量中字符串中的每个字符分隔到一列中

    我想将向量中的每个字符串分成列 但我做不到 library tidyr library dplyr df lt data frame x c abe bas dds eer df gt separate x c A B C sep 1 我想
  • 访问动态创建的 Shiny 模块的返回值

    我正在寻找构建一个闪亮的应用程序 它动态创建返回简单表单的模块 通过 callmodule 我有两个未解决的问题 希望得到一些指导 首先 当向用户提供多个表单 通过单击按钮 时 先前呈现的表单上的值将恢复为默认值 如何停止这种行为 以便值保
  • 如何在折线图中显示 Sep-12 格式的数据并抑制网格线和灰色背景?

    我正在努力使日期格式正确 数据已经是melt 格式 数据中有四个变量碰巧共享相同的数据 我只是想绘制一个简单的四线折线图 每个变量作为一条单独的线 并将 Sep 12 显示为最新数据点 我正在使用旧的 ggplot 请随意 我有两个问题 第
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • 删除绘图轴值

    我只是想知道是否有一种方法可以消除 r 图中的轴值 分别是 x 轴或 y 轴 我知道axes false将摆脱整个轴 但我只想摆脱编号 删除 x 轴或 y 轴上的编号 plot 1 10 xaxt n plot 1 10 yaxt n 如果

随机推荐