如何获取R中两列之间的列名
How to get the column names between two columns in R
R 中是否有函数 returns 列名,包括两个列名之间的和?此函数将开始列和结束列作为输入,return 输入之间和包括输入的列的名称。
例如,假设我正在使用以下数据框:
set.seed(1993)
DF.1 <- data.frame("Q0"= sample(seq(1,100), replace = T, 100))
for(i in seq(1,50, by =1)){
x <-sample(seq(1,100), replace = T, 100)
DF <- data.frame(x)
names(DF)[names(DF) == "x"] <- paste("Q", i, sep = "")
DF.1 <- cbind(DF.1, DF)
}
colnames(DF.1)
一个潜在的函数可能看起来像这样
function(Column Name 1, Column Name 2, data)
function("Q1", "Q5", data = DF.1)
它会输出:
>"Q1" "Q2" "Q3" "Q4" "Q5"
注意:该函数需要泛化到任何一组列名。
谢谢!
您可以像这样使用 dplyr
包:
library(dplyr)
df %>% select(Q1:Q5) %>% colnames()
或作为函数:
find_colnames <- function(c1, c2, data) data %>% select(c1:c2) %>% colnames()
没有额外的包。
names_between <- function(col_1, col_2, data){
names(data)[which(names(data) == col_1): which(names(data) == col_2)]
}
names_between("Q1", "Q5", data = DF.1)
[1] "Q1" "Q2" "Q3" "Q4" "Q5"
使用 grep
和 seq.int
。
f <- function(cn1, cn2, data) {
pat <- paste(paste0('^', c(cn1, cn2), '$'), collapse='|')
g <- grep(pat, colnames(data))
colnames(data)[do.call(seq.int, as.list(g))]
}
f("Q1", "Q5", data=DF.1)
# [1] "Q1" "Q2" "Q3" "Q4" "Q5"
R 中是否有函数 returns 列名,包括两个列名之间的和?此函数将开始列和结束列作为输入,return 输入之间和包括输入的列的名称。
例如,假设我正在使用以下数据框:
set.seed(1993)
DF.1 <- data.frame("Q0"= sample(seq(1,100), replace = T, 100))
for(i in seq(1,50, by =1)){
x <-sample(seq(1,100), replace = T, 100)
DF <- data.frame(x)
names(DF)[names(DF) == "x"] <- paste("Q", i, sep = "")
DF.1 <- cbind(DF.1, DF)
}
colnames(DF.1)
一个潜在的函数可能看起来像这样
function(Column Name 1, Column Name 2, data)
function("Q1", "Q5", data = DF.1)
它会输出:
>"Q1" "Q2" "Q3" "Q4" "Q5"
注意:该函数需要泛化到任何一组列名。
谢谢!
您可以像这样使用 dplyr
包:
library(dplyr)
df %>% select(Q1:Q5) %>% colnames()
或作为函数:
find_colnames <- function(c1, c2, data) data %>% select(c1:c2) %>% colnames()
没有额外的包。
names_between <- function(col_1, col_2, data){
names(data)[which(names(data) == col_1): which(names(data) == col_2)]
}
names_between("Q1", "Q5", data = DF.1)
[1] "Q1" "Q2" "Q3" "Q4" "Q5"
使用 grep
和 seq.int
。
f <- function(cn1, cn2, data) {
pat <- paste(paste0('^', c(cn1, cn2), '$'), collapse='|')
g <- grep(pat, colnames(data))
colnames(data)[do.call(seq.int, as.list(g))]
}
f("Q1", "Q5", data=DF.1)
# [1] "Q1" "Q2" "Q3" "Q4" "Q5"