R对文件进行交互并写入结果

R对文件进行交互并写入结果,r,R,我在R中的第一次尝试是迭代数据文件以进行分析并将输出写入文件。以下是我的代码: # 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=F

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

# 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()
但是,当我像这样运行循环内部的代码时

sink('analysis-output.txt')
week = "002"
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()
sink('analysis-output.txt'))
week=“002”
类别(“***”,周,“\n”)

obs
sink
将控制台输出转移到文件,因此数据需要由R输出才能显示在文件中。我认为缺少的是,在循环中,您需要显式地
打印
摘要的输出,以使其显示在控制台中(从而由sink编写)

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

for (i in 1:5) {
    print(summary(cars))
}
将结果打印到控制台

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

不打印到控制台

您是对的。谢谢知道为什么summary()在不在循环中时打印到控制台,但在循环中时需要print()包装器吗?@Steve显然,for循环中关闭了自动打印功能(可能是为了防止控制台被不需要的消息堵塞),所以您需要显式打印:可能是
for (i in 1:5) {
    summary(cars)
} 
for (i in 1:5) {
    summary(cars)
}