为何flextable未显示dataframe全部行?60行仅展示10行
问题:Flextable转换DataFrame后仅显示10行的原因及解决方法
问题描述
我有一个包含60行数据的DataFrame,但使用flextable包转换为表格后仅显示10行。相关R代码如下:
df <- structure(list(Script.x = c("Mandaic", "Mandaic", "Mandaic", "Mandaic", "Mandaic", "Mandaic", "Gothic", "Gothic", "Gothic", "Gothic", "Gothic", "Gothic", "Ugaritic", "Ugaritic", "Ugaritic", "Ugaritic", "Ugaritic", "Ugaritic", "MeroiticCursive", "MeroiticCursive", "MeroiticCursive", "MeroiticCursive", "MeroiticCursive", "MeroiticCursive", "Hangul", "Hangul", "Hangul", "Hangul", "Hangul", "Hangul", "Ogham", "Ogham", "Ogham", "Ogham", "Ogham", "Ogham", "BassaVah", "BassaVah", "BassaVah", "BassaVah", "BassaVah", "BassaVah", "Tagbanwa", "Tagbanwa", "Tagbanwa", "Tagbanwa", "Tagbanwa", "Tagbanwa", "Buginese", "Buginese", "Buginese", "Buginese", "Buginese", "Buginese", "SylotiNagri", "SylotiNagri", "SylotiNagri", "SylotiNagri", "SylotiNagri", "SylotiNagri"), pair = c("0841_0851_Mandaic", "0843_0850_Mandaic", "0846_0855_Mandaic", "0849_0856_Mandaic", "084A_084D_Mandaic", "0853_0857_Mandaic", "10332_10338_Gothic", "10334_10340_Gothic", "10336_10348_Gothic", "1033A_10342_Gothic", "1033B_1034A_Gothic", "10345_10347_Gothic", "10380_10397_Ugaritic", "10381_1038B_Ugaritic", "10382_1039C_Ugaritic", "10386_10398_Ugaritic", "10388_1039D_Ugaritic", "10389_1038C_Ugaritic", "109A5_109AA_MeroiticCursive", "109A9_109B2_MeroiticCursive", "109AC_109B3_MeroiticCursive", "109AD_109AE_MeroiticCursive", "109AF_109B5_MeroiticCursive", "109B0_109B4_MeroiticCursive", "110A_1164_Hangul", "110B_116B_Hangul", "1112_1175_Hangul", "1169_116E_Hangul", "116A_116F_Hangul", "116D_1172_Hangul", "1683_168B_Ogham", "1685_168C_Ogham", "1687_168D_Ogham", "1689_168A_Ogham", "168E_168F_Ogham", "1695_1696_Ogham", "16AD1_16AE7_BassaVah", "16ADA_16AE4_BassaVah", "16ADC_16AE9_BassaVah", "16ADD_16ADE_BassaVah", "16ADF_16AE8_BassaVah", "16AE1_16AE2_BassaVah", "1761_1762_Tagbanwa", "1763_176C_Tagbanwa", "1764_1768_Tagbanwa", "1765_1770_Tagbanwa", "1769_176E_Tagbanwa", "176A_176F_Tagbanwa", "1A05_1A0A_Buginese", "1A07_1A12_Buginese", "1A08_1A13_Buginese", "1A0C_1A0F_Buginese", "1A10_1A15_Buginese", "1A14_1A16_Buginese", "A805_A807_SylotiNagri", "A810_A812_SylotiNagri", "A811_A813_SylotiNagri", "A814_A822_SylotiNagri", "A818_A81C_SylotiNagri", "A819_A81B_SylotiNagri"), LettresPair = c("ࡁ ࡑ", "ࡃ ࡐ", "ࡆ ࡕ", "ࡉ ࡖ", "ࡊ ࡍ", "ࡓ ࡗ", "𐌲 𐌸", "𐌴 𐍀", "𐌶 𐍈", "𐌺 𐍂", "𐌻 𐍊", "𐍅 𐍇", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "𐦥 𐦪", "𐦩 𐦲", "𐦬 𐦳", "𐦭 NA", "NA 𐦵", "𐦰 𐦴", "ㅆ ㅒ", "ㅇ ㅙ", "ㅎ ㅣ", "ㅗ ㅜ", "ㅘ ㅝ", "ㅛ ㅠ", "ᚃ ᚋ", "ᚅ ᚌ", "ᚇ ᚍ", "ᚉ ᚊ", "ᚎ ᚏ", "ᚕ ᚖ", "𖫑 𖫧", "𖫚 𖫤", "𖫜 𖫩", "𖫝 𖫞", "𖫟 𖫨", "𖫡 𖫢", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA", "NA NA")), row.names = c(NA, -60L), class = c("tbl_df", "tbl", "data.frame")) library(dplyr) library(flextable) df %>% as_flextable()
表格仅显示10行的截图:
原因分析
这是因为flextable在RStudio预览窗口中默认只显示前10行数据,目的是避免预览时加载过多内容影响性能。实际上完整的60行数据已经被包含在flextable对象中,只是预览环节做了截断处理。
解决方法
方法1:调整预览显示行数
通过全局选项设置预览时显示的最大行数,再配合自动布局确保内容完整展示:
library(dplyr) library(flextable) # 设置预览时显示所有60行 options(flextable.print_max = 60) df %>% as_flextable() %>% set_table_properties(layout = "autofit")
方法2:导出表格到文档
将flextable导出到Word、HTML等格式,导出后的文档会包含全部数据:
# 导出到Word df %>% as_flextable() %>% save_as_docx(path = "full_table.docx") # 导出到HTML df %>% as_flextable() %>% save_as_html(path = "full_table.html")
方法3:控制台打印完整表格
使用flextable_to_console()函数在R控制台输出完整表格内容:
df %>% as_flextable() %>% flextable_to_console()
内容的提问来源于stack exchange,提问作者Julien
相关产品推荐
相关产品推荐

