将格式化的tibble写入R中的tsv

oprakyz7  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(174)

tidyverse为tibbles提供的格式对于在控制台中显示结果很有用。
如何将tibble格式导出为.txt或.csv文件?

library(tidyverse)
set.seed(123)
df = replicate(n=5, rnorm(n=10))
tbl = as_tibble(df)
tbl = tbl %>% mutate(
  V1 = num( (abs(V1)/max(abs(V1))), label = "%", scale = 100, digits = 2, notation = "dec"), 
  V2 =  num(V2, digits = 1, notation = "dec"),
  V3 = num(V3, sigfig = 3, notation = "sci") )

out_path = getwd() # modify as needed

print(tbl, n=Inf, width = Inf)
# A tibble: 10 × 5
       V1        V2       V3      V4      V5
        % <dec:.1!>  <sci:3>   <dbl>   <dbl>
 1  32.68       1.2 -1.07e+0  0.426  -0.695 
 2  13.42       0.4 -2.18e-1 -0.295  -0.208 
 3  90.88       0.4 -1.03e+0  0.895  -1.27  
 4   4.11       0.1 -7.29e-1  0.878   2.17  
 5   7.54      -0.6 -6.25e-1  0.822   1.21  
 6 100.00       1.8 -1.69e+0  0.689  -1.12  
 7  26.87       0.5  8.38e-1  0.554  -0.403 
 8  73.76      -2.0  1.53e-1 -0.0619 -0.467 
 9  40.05       0.7 -1.14e+0 -0.306   0.780 
10  25.99      -0.5  1.25e+0 -0.380  -0.0834
write_tsv(tbl, file = file.path(out_path, "tibble_example.txt") )

我想编写tibble的格式化版本,就像print()所显示的那样,具体来说,V1、V2和V3应该写成printed,而V4和V5应该写成标准位数(多于printed)。
我并不特别关心写入的文件是否具有头文件( % <dec:.1!> <sci:3> <dbl> <dbl> ),但是包含它是很好的。

g52tjvyc

g52tjvyc1#

如果你只想捕获打印输出,你可以使用capture.output把它设置成一个文件。尽管你可能想关闭默认的终端转义着色。你可以创建一个帮助函数

no_color_capture <- function(..., file=NULL) {
  opt <- options(crayon.enabled = FALSE)
  on.exit(options(opt))
  capture.output(..., file=file)
} 
no_color_capture(print(tbl, n=Inf, width = Inf), file=file.path(out_path, "tibble_example.txt"))

相关问题