r - 使用 lapply 运行函数时,如何在文本文件中逐行写入输出?
问题描述
这是我的功能
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
你能帮帮我吗?
解决方案
这是一个基于您所拥有的可行示例。我创建了一个示例函数,它接受 afilename
并返回一个包含名称长度和随机数的列表。
在你之后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)
推荐阅读
- android - 图片未显示在 recyclerview 中
- date - 纪元日期转换因 apache-nifi 失败
- swift - Swift 中的 AnyObject 和泛型
- wordpress - 制作图像热点(WP)的任何想法
- python - VBA 无法在新 PC 上运行 python 脚本
- python-3.x - 我正在使用 tkinter 开发游戏。犯一个愚蠢的错误
- javascript - 在CKEditor 5上插入图像时如何获取输入alt-title
- javascript - Vue JS联系表单错误“无法读取未定义的属性'post'”
- vb6 - 不确定如何填充用户定义的类型记录/元素
- r - 如何将字符列表向量组合成一个字符向量,同时保持每个列表的内容不变