这是我的职责
Mc_bval<-function(filename){
cat <- read.table(paste(cat_file, sep=""), header=TRUE)
mag <- cat$Magnitude
mag <- cat$Magnitude
Mc_bootstrap <- numeric(nbsample)
for(i in 1:nbsample) Mc_bootstrap[i] <- maxc(sample(mag, replace=TRUE),mbin)$Mc
Mc_mean <- mean(Mc_bootstrap, na.rm=TRUE)
Mc_sd <- sd(Mc_bootstrap, na.rm=TRUE)
mag_b <- mag[mag>=Mc_mean]
b <- b.guten(mag_b, Mc_mean)
return(list(c(b=b),Mc=Mc_mean,Mc_sd=Mc_sd))
#return(c(b=b,Mc))
}
函数正在返回值,我想通过读取文件列表中的每个文件名。 我想为每个文件(包括文件名)写一行输出 这是我尝试过的代码
filelist = list.files(pattern="*$.csv$")
outfile <- file("checkout.txt","w")
#apply(random_data, 2, checkfun, fileConn=outfile)
out = lapply(filelist,FUN = Mc_bval)
close(outfile)
输出文件看起来会像这样
cata_extract1.csv 1.46 0.25 4.15 0.33
cata_extract2.csv 1.44 0.35 4.25 0.23
cata_extract3.csv 1.4 0.25 4.25 0.24
cata_extract4.csv 1.34 0.85 4.25 0.23
你能帮我吗?
答案 0 :(得分:1)
这是根据您所拥有的一个可行的示例。我创建了一个示例函数,该函数接受filename
并返回包含名称长度和随机数的列表。
在lapply
之后,您可以使用writeLines
输出文件名和列表结果(将列表结果转换为字符向量)。在这种情况下,您可以使用第二个paste
来连接两个向量。
我希望它可以适合您的使用。
my_fun <- function(filename) {
a = nchar(filename)
b = sample(10,1)
return(list(a, b))
}
filelist = list.files(pattern="*.csv")
outfile <- file("checkout.txt", "w")
out <- lapply(filelist, FUN = my_fun)
writeLines(paste(filelist, unlist(lapply(out, paste, collapse=" "))), outfile)
close(outfile)