每行一行打印 R 数据框
Print R data frame one line per row
当使用 print 打印数据框时,我发现它停在某个宽度处,略短于 80 个字符,并且只打印适合的列。然后它继续打印接下来的这么多列。
是否可以让它打印一整行,而不管输出有多宽,没有换行符或点?
如果您使用 df <- as_tibble(df)
将您的 data.frame 转换为 tibble
,您可以精确控制您想要打印 table 的方式:
library(tidyverse)
# example data
data <- iris %>% t() %>% as_tibble()
# print all columns
data %>% print(width = Inf)
# print all rows and all columns
data %>% print(width = Inf, n = Inf)
另见 https://tibble.tidyverse.org/reference/formatting.html
但是,只打印第一行和第一列是有原因的:打印数千行会变得非常混乱和缓慢。
您还可以 运行 View(data)
在新的 window 中探索 table。
您对另一个答案的评论表明您这样做是专门为了写入文件 - 这个答案就是这样做的,但根据您使用的是 R 还是 Rstudio,控制台中的显示可能会有所不同。
根据?options
,控制台有 10,000 个字符宽度的硬性限制,只能通过重新编译 R 来增加。如果这对您的用例来说足够了,那么您可以这样做:
oldoptions <- options(width=10000)
options("width") #check that it's been set
#$width
#[1] 10000
sink("test.txt") #append = TRUE might be useful for subsequent writes
print(a) #Print the very wide dataframe
sink()
options(oldoptions) # reset the changed options
请注意,最初我认为当我在记事本中检查文件时这不起作用 - 那是因为(我的)记事本设置对行长度本身有限制,然后换行到下一行。使用更复杂的东西 (Notepad++) 查看表明它确实有效。
当使用 print 打印数据框时,我发现它停在某个宽度处,略短于 80 个字符,并且只打印适合的列。然后它继续打印接下来的这么多列。
是否可以让它打印一整行,而不管输出有多宽,没有换行符或点?
如果您使用 df <- as_tibble(df)
将您的 data.frame 转换为 tibble
,您可以精确控制您想要打印 table 的方式:
library(tidyverse)
# example data
data <- iris %>% t() %>% as_tibble()
# print all columns
data %>% print(width = Inf)
# print all rows and all columns
data %>% print(width = Inf, n = Inf)
另见 https://tibble.tidyverse.org/reference/formatting.html
但是,只打印第一行和第一列是有原因的:打印数千行会变得非常混乱和缓慢。
您还可以 运行 View(data)
在新的 window 中探索 table。
您对另一个答案的评论表明您这样做是专门为了写入文件 - 这个答案就是这样做的,但根据您使用的是 R 还是 Rstudio,控制台中的显示可能会有所不同。
根据?options
,控制台有 10,000 个字符宽度的硬性限制,只能通过重新编译 R 来增加。如果这对您的用例来说足够了,那么您可以这样做:
oldoptions <- options(width=10000)
options("width") #check that it's been set
#$width
#[1] 10000
sink("test.txt") #append = TRUE might be useful for subsequent writes
print(a) #Print the very wide dataframe
sink()
options(oldoptions) # reset the changed options
请注意,最初我认为当我在记事本中检查文件时这不起作用 - 那是因为(我的)记事本设置对行长度本身有限制,然后换行到下一行。使用更复杂的东西 (Notepad++) 查看表明它确实有效。