3

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

2 回答 2

2

问题是colnames调用中的子集。

试试names(my_df) <- c(names(my_df)[1], new_col_names)吧。

注意:namescolnames可用于data.frame对象。

编辑:弗洛德尔建议的替代方法,在函数调用之外设置子集:

names(my_df)[-1] <- new_col_names

于 2013-05-21T22:14:10.427 回答
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)
于 2013-05-21T22:13:56.227 回答