在R中基于colname的列之后移动基于colname的列

在R中基于colname的列之后移动基于colname的列,r,R,我希望能够仅根据列的名称将列移动到所需的位置,我希望按名称将列移动到具有定义名称的列之后所需的位置 您可以以数据虹膜为例 例如: data(iris) 实际列顺序: > colnames(iris) [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" 我希望使用COLNAME使用代码将“Petal.Width”放在“sepa.Length”之后,并避免使用dplyr选择解决方案等手动输入

我希望能够仅根据列的名称将列移动到所需的位置,我希望按名称将列移动到具有定义名称的列之后所需的位置

您可以以数据虹膜为例

例如:

data(iris)
实际列顺序:

> colnames(iris)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species" 
我希望使用COLNAME使用代码将“Petal.Width”放在“sepa.Length”之后,并避免使用dplyr选择解决方案等手动输入


非常感谢您。

如果我理解正确,您可以通过使用select操作列名向量来实现所需的功能

首先,您需要一个函数,它接受一个名称向量(假定是唯一的),以及两个特定的条目a和b,并将a移到b后面。我认为这个函数可以做到这一点(即使它看起来有点笨拙)


move这是否回答了您的问题?晚上好。欢迎来到StackOverflow!请阅读关于如何给予帮助的信息。这样你可以帮助别人帮助你@sertsedat没有,因为这是一种手动方法,我需要自动执行任务,只需按列名将一列移动到另一列。@RevanKnight您检查了该问题的所有答案了吗?我很确定你可以用一些答案
move <- function(names, a, b) {
  names_without_a <- names[which(names != a)]
  b_pos <- which(names_without_a == b)
  c(names_without_a[1:b_pos], 
    a, 
    names_without_a[(b_pos+1):length(names_without_a)])
}
df <- 
  iris %>% 
  select(move(colnames(iris), 'Petal.Width', 'Sepal.Length'))