我已阅读以下与我的问题类似(但仍然不同)的问题:R如何根据另一个表中的列顺序查找并重新排列一个表中的列(表中包含不同列数的列)
- Order data frame rows according to a target vector that specifies the desired order
- How to reorder data.table columns (without copying)
我的问题是不同的,因为在线程1,这两个表具有相同的长度,我试图使用线程2所示的方法,但好像他们也必须是相同的长度。
出于说明目的,我将创建两个表如下:
table1 = data.frame(rbind(c(rep(c(TRUE,FALSE), 3)), c(rep(TRUE, 4), rep(FALSE, 2))))
dim(table1)
setnames(table1, letters[1:6])
table1
a b c d e f
1 TRUE FALSE TRUE FALSE TRUE FALSE
2 TRUE TRUE TRUE TRUE FALSE FALSE
table2 = data.frame(rbind(c(rep(c(TRUE,FALSE), 2)), c(rep(TRUE, 3), rep(FALSE, 1))))
dim(table2)
setnames(table2, letters[7:4])
table2
g f e d
1 TRUE FALSE TRUE FALSE
2 TRUE TRUE TRUE FALSE
所需的返回将是:
f e d
1 FALSE TRUE FALSE
2 FALSE FALSE TRUE
返回表将适合以下标准:
- 只包含两个表中的字母
- 顺序返回表是表的顺序一致2
基本上,我想清理我的表1只包含列名也存在于表2,我想重新排序的表1的列顺序与表2列相同。
让我知道是否需要澄清其他东西!谢谢!
f呢? 'table1 [intersect(names(table2),names(table1))]'?你使用的是什么软件包,'setnames'来自哪里 – rawr
为什么列f被排除在期望的输出之外? – FascinatingFingers
@FascinatingFingers好抓!我的错!将修复我现在的错误 – alwaysaskingquestions