【发布时间】:2020-11-17 19:06:46
【问题描述】:
我正在尝试重命名 df 的特定列名。
为了执行这个任务,我正在使用一个函数来通过 for 循环执行替换。
这是我的代码:
## data ##
df <- structure(list(
A = c(1,2,3),
B = c("Yes", "Yes", "No"),
C = c("John", "James", "Maria"),
D = c(45, 34, 23),
E = c(712, 777, 888)),
class = "data.frame",
row.names = c(NA, -3L))
## setting atomic vectors for original/new names ##
original_df_names <- c("A", "B", "C")
new_df_names <- c("Order", "Answer", "Name")
## function to rename columns ##
rename_fun <- function(df, original_names, new_names){
for(i in 1:seq_along(original_names)){
for(j in 1:seq_along(new_names)){
colnames(df)[which(names(df) == i)] <- j
}
}
}
## applying function ##
df <- mapply(df = df,
original_names = original_df_names,
new_names = new_df_names,
rename_fun)
控制台输出:
Error in `colnames<-`(`*tmp*`, value = `*vtmp*`) :
attempt to set 'colnames' on an object with less than two dimensions
预期输出
names(df)
[1] "Order" "Answer" "Names" "D" "E"
有没有其他方法可以做到这一点?
【问题讨论】:
标签: r function dataframe for-loop names