gpt4 book ai didi

r - 在 sapply 中应用多个功能

转载 作者:行者123 更新时间:2023-12-04 10:46:20 26 4
gpt4 key购买 nike

我在 tmp 目录中有一个 .stat 文件列表。

样本:

a.stat=>

abc,10

abc,20

abc,30

b.stat=>
xyz,10

xyz,30

xyz,70

等等

我需要找到所有 .stat 文件的摘要。
目前我正在使用 filelist<-list.files(path="/tmp/",pattern=".stat") data<-sapply(paste("/tmp/",filelist,sep=''), read.csv, header=FALSE)
但是我需要将摘要应用于正在读取的所有文件。或者只是在 n 个 .stat 文件中我需要来自第二列的摘要

使用
data<-sapply(paste("/tmp/",filelist,sep=''), summary, read.csv, header=FALSE)不起作用,并给我总结了类(class)特色,这不是我想要的。
sapply(filelist, function(filename){df <- read.csv(filename, header=F);print(summary(df[,2]))})工作正常。然而,我的总体目标是找到任何一侧都超过 2 个标准差的值(异常值)。所以我使用 sd,但同时需要检查当前读取的文件中的所有值是否都在 2SD 范围内。

最佳答案

一次应用多个函数:

f <- function(x){
list(sum(x),mean(x))
}
sapply(x, f)

在您的情况下,您希望按顺序应用它们,因此首先读取 csv 数据然后进行汇总:
sapply(lapply(paste("/tmp/",filelist,sep=''), read.csv), summary)

要对数据集进行子集化以在特定列上运行摘要,您可以使用来自 summary 的更改外部 sapply 函数至 function(x) summary(x[[2]]) .

关于r - 在 sapply 中应用多个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30053266/

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