dump()函数产生截断的输出

时间:2017-08-04 02:12:27

标签: r

我希望你的帮助可以找出dump函数截断长输出的原因,以及可以采取哪些措施来避免这种行为。通过“截断”,我的意思是该函数显示...而不是打印对象的完整表示。

这是一个很大的问题,因为它会使某些像svSocket这样的包无法使用。该程序包依赖于完全可源转储作为在R会话之间发送对象的方法。

我在linux平台(x86_64-pc-linux-gnu)上看到了这个问题,但是在mac(x86_64-apple-darwin15.6.0)上没有看到这个问题,两者都使用最新版本的R(3.4.1)

这是可重复的例子:

x <- as.list(1:200)
dump("x", stdout())

输出结果为:

list(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 
    14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 
    26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 
    38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 
    50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 61L, 
    62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, 
    74L, 75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 
    86L, 87L, 88L, 89L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L, 
    98L, 99L, 100L, 101L, 102L, 103L, 104L, 105L, 106L, 107L, 
    108L, 109L, 110L, 111L, 112L, 113L, 114L, 115L, 116L, 117L,
  ...

1 个答案:

答案 0 :(得分:2)

最有可能的原因是因为已经设置了options(deparse.max.lines);自R版本3.3.2起,dump()尊重该选项设置,因为它被视为“脱离活动”。

对于svSocket,它确实不应该使用dump来传递数据;一般来说,serialize / unserialize是首选的方法。