gpt4 book ai didi

r - sapply - 保留列名称

转载 作者:行者123 更新时间:2023-12-01 22:56:53 26 4
gpt4 key购买 nike

我试图总结数据集中许多不同列(变量)的平均值、标准差等。我已经编写了自己的汇总函数来准确返回我需要的内容,并使用 sapply 立即将此函数应用于所有变量。它工作正常,但是返回的数据帧没有列名,我什至无法使用列号引用重命名它们 - 也就是说它们似乎不可能以任何方式使用。

我的代码如下 - 因为我只是在查找汇总统计数据,所以我只想使用相同的列(变量)名称,其中有 4 行(平均值、标准差、最小值、最大值)。有什么方法可以做到这一点(即使是我手动更改列名称的缓慢方法)

 #GENERATING DESCRIPTIVE STATISTICS
sfsum= function(x){
mean=mean(x)
sd=sd(x)
min=min(x)
max=max(x)

return(c(mean,sd,min,max))
}

#
c= list(sfbalanced$age_child, sfbalanced$earnings_child,
sfbalanced$logchildinc ,sfbalanced$p_inc84, sfbalanced$login84,
sfbalanced$p_inc85, sfbalanced$login85, sfbalanced$p_inc86,
sfbalanced$login86, sfbalanced$p_inc87, sfbalanced$login87,
sfbalanced$p_inc88, sfbalanced$login88)

summ=sapply(c,sfsum)

names(summ)
NULL

最佳答案

如果您在函数定义期间提供返回名称,则可以将行名称作为函数名称,如果您在定义对象时提供列表名称,则可以在 中使用 USE.NAMES sapply 自动获取名称。

mtcars 数据的示例可以为您提供以下输出。

代码

sfsum= function(x){
mean=mean(x)
sd=sd(x)
min=min(x)
max=max(x)

return(c("mean"=mean,"sd"=sd,"min" = min,"max" =max)) #For rownames
}

#
x= list("mpg" = mtcars$mpg, "disp" = mtcars$disp, "drat" = mtcars$drat)
#For column names

summ=sapply(x,sfsum, USE.NAMES = TRUE) #USE.NAMES = TRUE to get names on top

输出:

> summ
mpg disp drat
mean 20.090625 230.7219 3.5965625
sd 6.026948 123.9387 0.5346787
min 10.400000 71.1000 2.7600000
max 33.900000 472.0000 4.9300000

关于r - sapply - 保留列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50471794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com