我想在控制台中查看dput的结果,同时使用sink将输出重定向到文件。

> sink(file = 'test.txt', split = TRUE)
> x <- 2^(1:4)
> x # test.txt now contains: [1] 2 4 8 16
[1]  2  4  8 16
> dput(x) # where does this return value go?
> dput(x, file = 'test.txt') # test.txt is overwritten with: c(2, 4, 6, 8)

为什么x将其值打印到控制台(如预期的那样),但是dput(x)不打印?

(我在Windows 7上将R 3.4.3与RStudio版本1.1.423一起使用)

最佳答案

dput实际上在期望的地方写输出,但是在期望的地方没有写输出。
运行以下代码,显示dput输出将保持挂起状态,直到下一个普通输出为止:

sink(file = 'test.txt', split = TRUE)
x <- 2^(1:4)
x
dput(2*x,file="")
3*x

...通过以下方式提供一个test.txt:
[1]  2  4  8 16
c(4, 8, 16, 32)
[1]  6 12 24 48

另外,运行sink()函数以关闭文件也将强制执行挂起的输出(但将关闭连接)。
sink(file = 'test.txt', split = TRUE)
x <- 2^(1:4)
x
dput(2*x,file="")
sink()

关于r - 使用接收器转移输出时,dput写入哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49116123/

10-13 07:12