使用paste0重命名r中的列子集

时间:2013-05-21 22:10:48

标签: r

我有一个数据框(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

2 个答案:

答案 0 :(得分:2)

问题是colnames来电中的子集。

请尝试names(my_df) <- c(names(my_df)[1], new_col_names)

注意:namescolnames可与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)