【问题标题】:How to get an output in a certain way in R如何在R中以某种方式获得输出
【发布时间】:2017-01-01 11:53:11
【问题描述】:

这是一个简单的R语言程序

a<-5
sink("output.txt")
for (i in seq(1,5)) {
a=a+1
print(a)
}

b<-1
for (i in seq(1,5)) {
b=b+1
print(b)
}
sink()

我在文本文件中得到的输出是 -

> for (i in seq(1,5)) {
+   a=a+1
+   print(a)
+ }
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

> b<-1

> for (i in seq(1,5)) {
+   b=b+1
+   print(b)
+ }
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6

> sink()

但是,我只想要这种形式的文本输出 -

 6  2
 7  3
 8  4
 9  5
 10 6

我怎样才能得到这个?我试过\n在很多地方输入程序,但总是出错。

【问题讨论】:

  • 使用cat()\n

标签: r output


【解决方案1】:

我们可以通过在每次运行中连接输出来使用单个 for 循环和 print 'a' 和 'b'

a <- 5
b <- 1
for(i in seq(1, 5)) {
  a <- a+ 1
  b <- b + 1
  cat(c(a, b), '\n')
}
# 6 2 
# 7 3 
# 8 4 
# 9 5 
#10 6 

【讨论】:

  • 是否可以删除 [1] ?我必须运行一个非常大的循环(seq(1,10000)],在输出中我不需要这个。
  • @Dark_Knight 在这种情况下,将print 替换为cat
  • @Dark_Knight 抱歉,我没有完全理解您的评论。
  • 对不起,我发表了错误的评论。我的意思是说,是否也可以将导出的文本文件中的程序连同主要结果一起删除?
  • @Dark_Knight remove the program - 你是指使用sink时的代码吗?在这种情况下,使用capture.outputcapture.output(for(i in seq(1, 5)){....code...}, file = "output.txt")
【解决方案2】:

您也可以取消 for 循环

cat(paste0(paste(a + seq(1,5), b + seq(1,5)), collapse="\n"))

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2012-06-14
    • 2014-10-23
    • 2017-07-06
    相关资源
    最近更新 更多