如何将DataFrame写入文件,使列值无论长度均无空格紧密相邻?
解决DataFrame转固定宽度单行文本的问题
我来帮你搞定这个输出格式的问题~你之前用write.fwf没得到想要的结果,是因为这个函数本质是用来生成每行对应原DataFrame一行的固定宽度文件,而且默认会给列之间预留空格(哪怕设置了sep=""也会按列宽度分配空白),同时它会逐行输出记录,不符合你要把所有行的拼接结果放在同一行的需求。
下面给你两种可行的解决方案:
方法1:用dplyr逐行拼接(适合熟悉tidyverse的场景)
先把每行的V1、V2、V3直接拼接成固定长度的字符串,再把所有字符串用空格分隔后写入文件:
library(dplyr) # 先构建你的示例DataFrame(如果已经有了可以跳过这步) df <- data.frame( V1 = c("1", "06", "0", "08", "0", "06"), V2 = c("06", "1", "08", "0", "06", "0"), V3 = c("1", "1", "1", "1", "1", "1"), stringsAsFactors = FALSE ) # 逐行拼接成固定宽度字符串,再提取所有结果 combined_strings <- df %>% rowwise() %>% mutate(row_combined = paste0(V1, V2, V3)) %>% pull(row_combined) # 把所有字符串用空格连接,写入文件 cat(paste(combined_strings, collapse = " "), file = "file.txt")
方法2:用Base R实现(无需额外加载包)
如果不想加载dplyr,用base R的apply也能快速解决:
# 构建示例DataFrame(已存在则跳过) df <- data.frame( V1 = c("1", "06", "0", "08", "0", "06"), V2 = c("06", "1", "08", "0", "06", "0"), V3 = c("1", "1", "1", "1", "1", "1"), stringsAsFactors = FALSE ) # 按行拼接每行的元素 combined_strings <- apply(df, 1, function(row) paste0(row, collapse = "")) # 写入文件 cat(paste(combined_strings, collapse = " "), file = "file.txt")
两种方法最终都会生成你想要的输出:
1061 0611 0081 0801 0061 0601
内容的提问来源于stack exchange,提问作者Union find
相关产品推荐
相关产品推荐

