【问题标题】:subsetting columns of a tibble with a character vector from another tibble用来自另一个 tibble 的字符向量对 tibble 的列进行子集化
【发布时间】:2017-03-15 18:49:04
【问题描述】:

我有两个小玩意

>a.tibble

names other
 a      0
 c      0
 d      0

>b.tibble

a   b   c   d  e
1   1   1   1  1
1   1   1   1  1

我想用names <- select(a.tibble,names) 子集b.tibble 来制作c.tibble

>c.tibble

a   c   d  
1   1   1   
1   1   1 

names 子集化很重要,因为实际上我有很多名字来子集一个大标题。这使得通常的select(b.tibble,-c(b,e)) 或其他“手动”列名条目是不可能的。

数据

library(tibble)
a.tibble = tibble(names = c("a","c","d"), other = 0)
b.tibble = tibble(a = rep(1,2), b = 1, c = 1, d = 1, e = 1)

【问题讨论】:

  • b.tibble[, names(b.tibble) %in% a.tibble$names]
  • 我不知道tibbles 的行为如何,但这适用于data.frame b.tibble[as.character(a.tibble$names)]
  • b.tibble %>% select_(.dots = a.tibble$names) 似乎是这样,尽管这似乎不是一种有效的处理方式。
  • @Frank 我在发帖前曾为.dots 苦苦挣扎。这是一个令人困惑的 IMO 语法。
  • @Alex 我同意并且在登陆之前不得不摆弄几个排列。一般来说,我不觉得 pipe-verse 函数对编程非常友好。

标签: r dataframe dplyr subset


【解决方案1】:

@ytk 的答案对我有用 b.tibble[, names(b.tibble) %in% a.tibble$names]

【讨论】:

  • 所以b.tibble[a.tibble$names] 对您不起作用?它对我有用。
猜你喜欢
  • 2021-07-21
  • 2019-12-07
  • 2023-03-05
  • 2022-01-07
  • 1970-01-01
  • 2018-03-30
  • 2018-05-21
  • 2022-01-13
  • 1970-01-01
相关资源
最近更新 更多