重新检查文件并写入结果

时间:2019-03-06 15:31:00

标签: r

我第一次在R中尝试遍历数据文件以进行分析并将输出写入文件。这是我的代码:

{
  "query": {
    "bool": {
      "should": [
        {
          "terms_set": {
            "tags.all": {
              "terms": [ 9, 8 ],
              "minimum_should_match_script": {
                "source": "2"
              }
            }
          }
        },
        {
          "terms": {
            "tags.id": {
              "value": [ 9, 8 ],
              "boost": 2
            }
          }
        }
      ]
    }
  }
}

运行此命令时,没有错误,但是analysis-output.txt仅包含cat函数的输出,即

create or replace  function test()
returns void as $$
import numpy as np;
import pandas as pd;
a=np.matrix([[1,2,3],[4,5,6],[7,8,9],[0,0,0]]);
r,c=a.shape;
df=pd.DataFrame(data=a,index=np.array(range(1, r+1)),columns=np.array(range(1, c+1)))

$$language plpython2u;

但是,当我像这样自行运行循环内部的代码时

# load packages igraph, dils, sna
sink('analysis-output.txt')
for (week in c("002","003","004","005","006")) {
    cat("*** ",week,"\n")
    obs <- read.table(paste(week,"obs.txt",sep="-"),sep="\t", header=FALSE)
    per <- read.table(paste(week,"per.txt",sep="-"),sep="\t", header=FALSE)
    n <- length(obs)
    mper <- AdjacencyFromEdgelist(per, check.full = TRUE)
    mobs <- AdjacencyFromEdgelist(obs, check.full = TRUE)
    g<-array(c(mper[[1]],mobs[[1]]),c(n,n,2))
    q<-qaptest(g,gcor,g1=1,g2=2)
    summary(q)
}
sink()

我确实在输出文件中获得了摘要结果:

***  002 
***  003 
***  004 
***  005 
***  006 

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

sink将控制台输出转移到文件,因此数据需要由R输出以显示在文件中。我认为所缺少的是,在一个循环中,您需要显式print的输出summary以使其出现在控制台中(并因此由接收器编写)。

比较这两个循环的控制台输出:

for (i in 1:5) {
    print(summary(cars))
}

将结果打印到控制台

for (i in 1:5) {
    summary(cars)
} 

不打印到控制台