R 如何更改数据框中包含点的列名

R 如何更改数据框中包含点的列名,r,dataframe,R,Dataframe,在使用aggregate之后,我制作了一个data.frame,然后尝试更改某些列的列名。data.frame(df)为: 我曾经 colnames(df) 其名称如下: [1] "DistanceFromBase" "Layer" "Nitrogen" "x" 我想将列名“x.mean”和“x.sd”分别更改为“mean”和“sd” colnames(df)[4] <- "mean" 如何将列名“x.mean”和“x.sd”更改为“mean”和

在使用aggregate之后,我制作了一个data.frame,然后尝试更改某些列的列名。data.frame(df)为:

我曾经

colnames(df)
其名称如下:

[1] "DistanceFromBase" "Layer"            "Nitrogen"         "x"
我想将列名“x.mean”和“x.sd”分别更改为“mean”和“sd”

colnames(df)[4] <- "mean"

如何将列名“x.mean”和“x.sd”更改为“mean”和“sd”。

当您像使用多个函数那样使用聚合时,您将得到一个
矩阵作为列:

output <- aggregate(. ~ Species, data = iris[c(1, 5)], 
                    function(x) c(Mean = mean(x), Sum = sum(x)))
str(output)
# 'data.frame':  3 obs. of  2 variables:
#  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 2 3
#  $ Sepal.Length: num [1:3, 1:2] 5.01 5.94 6.59 250.3 296.8 ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : NULL
#   .. ..$ : chr  "Mean" "Sum"

从那里,您可以像往常一样重命名列。

我强烈怀疑,看起来像您的最后两列的内容实际上是一个包含两个元素的列表。您能告诉我们您是如何生成数据帧的吗?另外,运行
dim(df)
查看您是有四列还是五列。@nograps,我预测的不是
列表,而是
数组。我建议OP使用
df@noglaps,我使用代码:“聚合(df,df[c(“与基础的距离”,“层”,“氮”)”),FUN=函数(x)c(平均值=平均值(x),标准差=标准差(x))”。我已经运行了“dim(df)”,它有四列。@宗师无忌,是的,但您的第四列本身就是一个
矩阵
。试试我建议的解决方案。@Ananda Mahto,在我使用“df+1”和一个冒失的正则表达式进行重命名之后
names(df)@SimonO101,我需要先使用
do.call(data.frame,…)
然后才能使用
names(df)
  DistanceFromBase Layer Nitrogen mean.mean   mean.sd
1                5   1-2       HN 50.884615 10.841870
2               10   1-2       HN 64.846154  8.008457
3               15   1-2       HN 65.538462  7.500564
4               20   1-2       HN 65.461538  8.448577
5               25   1-2       HN 65.000000  9.055385
6               30   1-2       HN 65.565217  9.806427
output <- aggregate(. ~ Species, data = iris[c(1, 5)], 
                    function(x) c(Mean = mean(x), Sum = sum(x)))
str(output)
# 'data.frame':  3 obs. of  2 variables:
#  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 2 3
#  $ Sepal.Length: num [1:3, 1:2] 5.01 5.94 6.59 250.3 296.8 ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : NULL
#   .. ..$ : chr  "Mean" "Sum"
output2 <- do.call(data.frame, output)
str(output2)
# 'data.frame': 3 obs. of  3 variables:
#  $ Species          : Factor w/ 3 levels "setosa","versicolor",..: 1 2 3
#  $ Sepal.Length.Mean: num  5.01 5.94 6.59
#  $ Sepal.Length.Sum : num  250 297 329