【发布时间】:2020-06-09 11:39:22
【问题描述】:
我有一个函数可以根据其索引更改列的名称。 它仅限于 2 列。更改此功能以接受多个输入会很好。 但是我不确定我需要使用哪些数据结构来执行此操作。 谁能指出我正确的方向?
这是一个示例数据集和函数:
id <- c(500,600,700,800)
test1 <- c(1,4,5,6)
test2 <- c(6,4,3,6)
test3 <- c(4,3,4,6)
test4 <- c(3,5,6,6)
test <- data.frame(id,test1,test2,test3,test4)
func1 <- function (df, col_name1, col_range1, col_name2, col_range2) {
for (i in 1:length(names(df))) {
if (i %in% col_range1) {
names(df)[i] <- paste(col_name1,names(df)[i], sep = "_")
}
else if (i %in% col_range2) {
names(df)[i] <- paste(col_name2,names(df)[i], sep = "_")
}
}
return(df)
}
这个函数可以这样使用:
test <- func1(test, "MH", 2:3, "MP", 4:5)
最好更改函数以便它可以接受这样的输入:
test <- func1(test, "MH", 2, "ML", 3, "MP", 4:5)
对此有什么想法吗?
【问题讨论】:
-
你可能想检查 tidyverse 库 - 这个函数可能特别有用:[dplyr.tidyverse.org/reference/rename.html](dplyr::rename)
-
@WolfgangArnold 这是一个很好的建议,但您的链接已损坏。应该是dplyr.tidyverse.org/reference/rename.html。
标签: r