我想用函数重命名数据框中的多个列。
数据框
nameAXX = c("car1", "car2", "car2", "car2", "car3", "car1")
brand = c("b1", "b2", "b2", "b2", "b3", "b1")
productionAXX = c(10, 10, 10, 40, 10, 5)
df = data.frame(brand, nameAXX, productionAXX)
循环本身有效,但如果我将它包装在一个函数中并调用它就不行。
replaceColNamePattern <- function(df, pattern, replace){
for (name in colnames(df)){
if (regexpr(pattern, name) > 0){
names(df)[names(df)==name] <- gsub(pattern, replace, name)
}
}
}
通话功能
replaceColNamePattern(adf, "AXX", "")
是否无法在函数中重命名列?
答案 0 :(得分:1)
除了akrun et的优秀答案。 alii,你的代码没有按预期工作的原因是因为你在函数范围内更改了df
的名称(仅在那里)。您需要返回df
并将其分配回原始变量:
replaceColNamePattern2 <- function(df, pattern, replace){
names(df) <- gsub(pattern, replace, names(df))
df
}
(df <- replaceColNamePattern2(df, "AXX", ""))
# brand name production
# 1 b1 car1 10
# 2 b2 car2 10
# 3 b2 car2 10
# 4 b2 car2 40
# 5 b3 car3 10
# 6 b1 car1 5