首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R循环打开文件

R循环打开文件
EN

Stack Overflow用户
提问于 2014-11-05 07:33:22
回答 2查看 154关注 0票数 0

我试图运行一个简单的5行命令,但超过9000多个不同的文件。我编写了下面的for循环

代码语言:javascript
复制
setwd("/Users/morandin/Desktop/Test")
output_file<- ("output_file.txt")
files <- list.files("/Users/morandin/Desktop/Test")
for(i in files) {
  chem.w.in <- scan(i, sep=",")
  pruned.tree<-drop.tip(mytree,which(chem.w.in %in% NA))  
  plot(pruned.tree)
  pruned.tree.ja.chem.w.in <- phylo4d(pruned.tree, c(na.omit(chem.w.in)))
  plot(pruned.tree.ja.chem.w.in) 
  out <- abouheif.moran(pruned.tree.ja.chem.w.in)
  print(out)
}

嘿,我正在编辑我的问题:上面的代码现在完美地完成了for循环(谢谢您的帮助)。我的输出仍有问题。

我可以通过bash命令使用R重定向整个输出,但是我需要处理文件的名称。我的输出如下:

代码语言:javascript
复制
class: krandtest 
Monte-Carlo tests
Call: as.krandtest(sim = matrix(res$result, ncol = nvar, byrow = TRUE), 
    obs = res$obs, alter = alter, names = test.names)

Number of tests:   1 

Adjustment method for multiple comparisons:   none 
Permutation number:   999 
  Test       Obs   Std.Obs   Alter Pvalue
1   dt 0.1458514 0.7976225 greater    0.2

other elements: adj.method call

是否有方法打印Pvalue结果和文件名称(元素i)??

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-05 07:59:42

由于Paul Hiemstra's answer回答了#1,下面是对#2的回答,假设“应答”指的是“abouheif.moran(pruned.tree.ja.chem.w.in)的打印输出”。

cat()与参数append = true一起使用。例如:

代码语言:javascript
复制
output_file = "my_output_file.txt"
for(i in files) {
    # do stuff
    # make plots
    out <- abouheif.moran(pruned.tree.ja.chem.w.in)
    out <- sprintf("-------\n  %s:\n-------\n%s\n\n", i, out)
    cat(out, file = output_file, append = TRUE)
}

这将生成一个名为my_output_file.txt的文件,其外观如下:

代码语言:javascript
复制
-------
file_1:
-------
output_goes_here

-------
file_2:
-------
output_goes_here

显然,格式化完全取决于您;我只是想演示一下这里可以做些什么。

另一种解决方案是对整个脚本进行sink(),但我更愿意明确地说明这一点。中间路线可能是sink()代码的一小部分,但除非在极端情况下,这是一个偏好或风格的问题。

票数 2
EN

Stack Overflow用户

发布于 2014-11-05 07:40:34

我怀疑这里发生的问题是,list.files()默认只返回文件名的列表,而不是文件的整个路径。将full.names设置为TRUE将解决此问题。注意,您不必添加txt,添加文件名,因为list.files()已经返回到现有文件的完整路径。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26751850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档