R循环在多个csv文件上执行函数
我曾尝试创建一个for循环,它对4个csv文件中的每一个都执行类似的操作,但有更多的文件R循环在多个csv文件上执行函数,r,csv,R,Csv,我曾尝试创建一个for循环,它对4个csv文件中的每一个都执行类似的操作,但有更多的文件 dat1<- read.csv("female.csv", header =T) dat2<- read.csv("male.csv", header =T) for (i in 1:2) { message("Female, Male") Temp <- dat[i][(dat[i]$NAME == "Temp"), ] Temp <- Temp[complete.c
dat1<- read.csv("female.csv", header =T)
dat2<- read.csv("male.csv", header =T)
for (i in 1:2) {
message("Female, Male")
Temp <- dat[i][(dat[i]$NAME == "Temp"), ]
Temp <- Temp[complete.cases(Temp)]
print(mean(Temp$MEAN))
dat1就个人而言,我认为最简单的方法是使用plyr软件包:
library(plyr)
myFiles <- c("male.csv", "female.csv")
dat <- ldply(myFiles, read.csv)
dat <- dat[complete.cases(dat), ]
mean(dat$MEAN)
库(plyr)
myFiles在for循环中关闭的}
在哪里?dat[1]
是dat
的第一个元素<代码>dat1
是另一个对象!读入多个文件的最好方法可能是将它们放在一个列表中。请参阅下面的链接以获取示例:我可以看出您是R的初学者。我在学习R的一开始也遇到了同样的问题。这是正常的,直到你开始“思考的方式”。别担心。你很快就会明白的。谢谢,这很有效,但它似乎把所有的文件都合并了起来。我想为每个文件获得一个单独的输出。这就是为什么我想循环通过它们。
# create a vector of files
myFiles <- c("male.csv", "female.csv")
# create a function that properly handles ONLY ONE ELEMENT
readAndCalc <- function(x){ # pass in the filename
tmp <- read.csv(x) # read the single file
tmp <- tmp[complete.cases(tmp), ] # complete.cases()
mean(tmp$MEAN) # mean
}
x <- "male.csv"
readAndCalc(x) # test with ONE file
sapply(myFiles, readAndCalc) # run with all your files