使用R的write.fwf函数处理导入数据时遭遇报错求助
问题原因与解决办法
报错根源
read_csv()(tidyverse的readr包提供)返回的是tibble格式,而非R原生的data.frame。gdata包的write.fwf()函数是针对传统data.frame开发的,内部处理逻辑对tibble的兼容性差,导致赋值操作时出现行列维度不匹配的错误。
可行解决方案
方案1:转换为原生data.frame
调用write.fwf()前,用as.data.frame()把导入的tibble转成传统data.frame:
write.fwf(x = as.data.frame(read_testdata))
方案2:改用基础R的导入函数
如果不需要tibble的特性,直接用基础R的read.csv()导入,得到原生data.frame:
read_testdata <- read.csv("test.csv") write.fwf(x = read_testdata)
方案3:用tidyverse原生的固定宽度文件写入函数
如果想延续tidyverse工作流,使用readr::write_fwf()(注意是下划线命名,和gdata的write.fwf区分),它原生支持tibble:
readr::write_fwf(read_testdata, file = "your_output_file.fwf")
内容的提问来源于stack exchange,提问作者Way Naul
相关产品推荐
相关产品推荐

