R 聚合打印列,但不将其保存到全局环境

R 聚合打印列,但不将其保存到全局环境,r,function,dataframe,global-variables,aggregate,R,Function,Dataframe,Global Variables,Aggregate,我在这里有点困惑,无法找到一个好的答案 我有一个我正在尝试聚合的数据帧: dt <- data.frame(age=rchisq(20,10),group=sample(1:2,20,rep=T)) 即使在使用ag将全局环境数据框打印到控制台时,它也会打印所有三列。为什么第三栏没有出现在全球环境中?我怎样才能把它放在那里?它在我的控制台上运行得很好: > dt <- data.frame(age=rchisq(20,10),group=sample(1:2,20,re

我在这里有点困惑,无法找到一个好的答案

我有一个我正在尝试聚合的数据帧:

dt <- data.frame(age=rchisq(20,10),group=sample(1:2,20,rep=T))

即使在使用ag将全局环境数据框打印到控制台时,它也会打印所有三列。为什么第三栏没有出现在全球环境中?我怎样才能把它放在那里?

它在我的控制台上运行得很好:

    > dt <- data.frame(age=rchisq(20,10),group=sample(1:2,20,rep=T))
> ag<-aggregate(age ~ group, dt, function(x) c(mean = mean(x), sd = sd(x)))
> ag
  group  age.mean    age.sd
1     1 11.176997  4.439366
2     2 11.374782  4.416337
> aggregate(age ~ group, dt, function(x) c(mean = mean(x), sd = sd(x)))
  group  age.mean    age.sd
1     1 11.176997  4.439366
2     2 11.374782  4.416337

它在我的控制台上运行良好:

    > dt <- data.frame(age=rchisq(20,10),group=sample(1:2,20,rep=T))
> ag<-aggregate(age ~ group, dt, function(x) c(mean = mean(x), sd = sd(x)))
> ag
  group  age.mean    age.sd
1     1 11.176997  4.439366
2     2 11.374782  4.416337
> aggregate(age ~ group, dt, function(x) c(mean = mean(x), sd = sd(x)))
  group  age.mean    age.sd
1     1 11.176997  4.439366
2     2 11.374782  4.416337
您的问题是聚合结果会出现在矩阵列中,例如,当应用多个FUN=action时。您还需要在其周围附加一个data.frame方法,仅此而已

ag1 <- aggregate(age ~ group, dt, function(x) c(mean=mean(x), sd=sd(x)))
str(ag1)
# 'data.frame': 2 obs. of  2 variables:
#  $ group: int  1 2
#  $ age  : num [1:2, 1:2] 9.06 11 3.28 4.8
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : NULL
#   .. ..$ : chr [1:2] "mean" "sd"
制作数据帧:

res <- do.call(data.frame, ag1)
res
#   group  age.mean   age.sd
# 1     1  9.061935 3.283173
# 2     2 10.998478 4.798354

str(res)
# 'data.frame': 2 obs. of  3 variables:
#  $ group   : int  1 2
#  $ age.mean: num  9.06 11
#  $ age.sd  : num  3.28 4.8
一应俱全:

res <- do.call(data.frame, aggregate(age ~ group, dt, function(x)
  c(mean=mean(x), sd=sd(x)))
数据:

您的问题是聚合结果会出现在矩阵列中,例如,当应用多个FUN=action时。您还需要在其周围附加一个data.frame方法,仅此而已

ag1 <- aggregate(age ~ group, dt, function(x) c(mean=mean(x), sd=sd(x)))
str(ag1)
# 'data.frame': 2 obs. of  2 variables:
#  $ group: int  1 2
#  $ age  : num [1:2, 1:2] 9.06 11 3.28 4.8
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : NULL
#   .. ..$ : chr [1:2] "mean" "sd"
制作数据帧:

res <- do.call(data.frame, ag1)
res
#   group  age.mean   age.sd
# 1     1  9.061935 3.283173
# 2     2 10.998478 4.798354

str(res)
# 'data.frame': 2 obs. of  3 variables:
#  $ group   : int  1 2
#  $ age.mean: num  9.06 11
#  $ age.sd  : num  3.28 4.8
一应俱全:

res <- do.call(data.frame, aggregate(age ~ group, dt, function(x)
  c(mean=mean(x), sd=sd(x)))
数据:


我不能在这里发表评论,因为我的评价很低,所以我把我的评论作为一个答案


除了jay.sf answer之外,在中还有一个关于聚合行为的详细解释。

由于评级较低,我无法在此发表评论,因此我将我的评论作为答案发布


除了jay.sf answer,中还详细解释了聚合的这种行为。

如果您在全局变量中单击ag并在新窗口中打开数据框?如果您在全局变量中单击ag并在新窗口中打开数据框?谢谢,这很有效!:@Rivered不客气,我很高兴。谢谢,成功了!:@不客气,我很高兴。