当前位置: 首页 > 知识库问答 >
问题:

通过row-do.call(rbind,x)等价物绑定未命名向量列表的Tidyverse方法

易星宇
2023-03-14

我经常会发现这样的问题:人们最终得到了一个未命名字符向量的未命名列表,并且希望将它们按行绑定到data.frame中。这里有一个例子:

library(magrittr)
data <- cbind(LETTERS[1:3],1:3,4:6,7:9,c(12,15,18)) %>%
  split(1:3) %>% unname
data
#[[1]]
#[1] "A"  "1"  "4"  "7"  "12"
#
#[[2]]
#[1] "B"  "2"  "5"  "8"  "15"
#
#[[3]]
#[1] "C"  "3"  "6"  "9"  "18"

一种典型的方法是从基R使用do.call

do.call(rbind, data) %>% as.data.frame
#  V1 V2 V3 V4 V5
#1  A  1  4  7 12
#2  B  2  5  8 15
#3  C  3  6  9 18
Reduce(rbind,data, init = NULL) %>% as.data.frame
#  V1 V2 V3 V4 V5
#1  A  1  4  7 12
#2  B  2  5  8 15
#3  C  3  6  9 18
library(dplyr)
bind_rows(data)
#Error: Argument 1 must have names
library(data.table)
rbindlist(data)
#Error in rbindlist(data) : 
#  Item 1 of input is not a data.frame, data.table or list
library(purrr)
map_df(data, ~set_names(.x, seq_along(.x)))
# A tibble: 3 x 5
#  `1`   `2`   `3`   `4`   `5`  
#  <chr> <chr> <chr> <chr> <chr>
#1 A     1     4     7     12   
#2 B     2     5     8     15   
#3 C     3     6     9     18  

然而,这似乎是更多的步骤比它需要的。

因此,我的问题是什么是一种有效的tidyversedata.table方法来将未命名字符向量的未命名列表按行绑定到data.frame中?

共有1个答案

庾勇军
2023-03-14

不完全确定效率,但使用purrrtibble的紧凑选项可以是:

map_dfc(purrr::transpose(data), ~ unlist(tibble(.)))

  V1    V2    V3    V4    V5   
  <chr> <chr> <chr> <chr> <chr>
1 A     1     4     7     12   
2 B     2     5     8     15   
3 C     3     6     9     18  
 类似资料:
  • 我有一个列表,每个元素都是一个字符向量,长度不同。我想将数据绑定为行,这样列名就“对齐”,如果有额外的数据,就创建列,如果缺少数据,就创建NAs 下面是我正在使用的数据的模拟示例 如果我确定每个元素的格式是相同的,下面的行通常是我会做的... 我希望有人能想出一个很好的解决方案,匹配列名,并用s填空,同时添加新列,如果在绑定过程中发现新列。。。

  • 我想在不同的列表中加入多个向量,并输出一个矩阵列表。其思想是,列表中具有相同名称的所有项目,例如所有项目,通过行作为矩阵连接起来。增加的复杂性是,这些向量可以具有不同的长度,因此实现起来并不简单;矩阵中缺少的值可以附加s。 输入列表: 我希望获得的理想输出是一个列表,其中矩阵的数量与唯一列表项的数量相同,其中每个矩阵由行绑定的不同长度的向量组成: 我将如何编写一个函数,它也可以扩展到合并具有不同长

  • 我已经看了好几次留档了,看了来源,都没用。 我在寻找与PHPUnit的“this”相同的Codeception- 根据文档,就像这应该是可行的,但它不是“未定义的方法”。我必须激活哪个助手、模块或其他什么?

  • 这里的答案引用了一个包含所有完全未来方法的表,但这并不是我要找的,或者我可能搞错了。 我正在寻找Streams'peek()的完全未来等价物,因此基本上是一个返回输入参数的,或者一个不返回的。我认为有两种方法都不能在语义上准确地表达我的意图,但可以做到这一点: 和 两者都从上一个阶段获取输入,允许我执行一个操作并以相同的类型返回到下一个阶段。在这两种方法中,后一种方法将我的时间限制在其他事情完成时

  • 我是WPF技术的新手。我已经在WinForms开发了大约6年。 现在我想通过学习WPF来提高我的技能一大步。我正在阅读MSDN中的介绍指南,同时作为个人练习,我试图将WinForms UI的sructure转换为其WPF UI的等价物。 这是我想在WPF中重现的WinForms控件结构的简单模型: 我的问题:有人可以指导我或给我一个简短的例子,我如何可以添加一个下拉按钮的东西在工具栏?。

  • Intellij中的等效快捷方式是什么?