我有一个R脚本,它使用sink将 Dataframe 和其他一些行导出到.csv文件。另一个脚本从以这种方式导出的多个csv中收集数据。
这些脚本需要由多个用户使用,虽然这个过程对我来说很好,但当我要求其他人运行它时,它会引入错误。
原因似乎是接收器函数显然以RStudio中控制台窗口的宽度导出 Dataframe ,因此如果 Dataframe 的宽度太宽,它会以与打印到控制台窗口完全相同的方式将其 Package 在多行上。因此,第二个脚本无法定位它要查找的数据。
是否可以确保输出到.csv时不考虑显示窗口的宽度,并使文件的宽度足以存储所有列,而不管用户是谁,也不管他们在RStudio或其他地方有什么设置?
Edit:下面是一些重现问题的示例代码:
my.df <- data.frame(a = c(1:10),
b = c(1:10),
c = c(1:10),
d = c(1:10),
e = c(1:10),
f = c(1:10),
g = c(1:10),
h = c(1:10),
i = c(1:10),
j = c(1:10))
sink(file = "test.txt")
print("title information")
print(my.df)
cat("\n")
print("... some other lines...")
sink(file = NULL)
在1)宽屏幕布局和2)窄屏幕布局下运行这段代码,会在文本文件中产生不同的输出。
2条答案
按热度按时间2ul0zpep1#
sink
不适用于创建报告。正如我在评论中建议的那样,使用knitr。以下是使用RStudio的方法:步骤1.创建一个R Notebook文件。
步骤2.文件内容应该如下所示(根据需要进行自定义,例如,通过设置输出的宽度):
... some other lines...
ozxc1zmp2#
对于其他感兴趣的各方,可以使用线来设置宽度:
在使用sink()命令之前。