我有一个数据框(my_df
),其中的列以各个县号命名。我融化了 / 来自来自更大集合的数据,以达到这一点。第一列名称是年份,它是1970 - 2011年的年份列表。接下来的3010列是县。但是,我想将县列重命名为"column_"+county number
。
此代码在R中执行,但无论出于何种原因,都不会更新列名。他们只是数字......任何帮助?
new_col_names = paste0("county_",colnames(my_df[,2:ncol(my_df)]))
colnames(my_df[,2:ncol(my_df)]) = new_col_names
答案 0 :(得分:2)
问题是colnames
来电中的子集。
请尝试names(my_df) <- c(names(my_df)[1], new_col_names)
。
注意:names
和colnames
可与data.frame
个对象互换。
编辑:flodel建议的替代方法,在函数调用之外进行子集化:
names(my_df)[-1] <- new_col_names
答案 1 :(得分:1)
colnames()
用于矩阵(或矩阵式对象),只需names()
data.frame
示例:
new_col_names=paste0("county_",colnames(my_df[,2:ncol(my_df)]))
my_df <- data.frame(a=c(1,2,3,4,5), b=rnorm(5), c=rnorm(5), d=rnorm(5))
names(my_df) <- c(names(my_df)[1], new_col_names)