在R中如何将文本文件的长字符串转换为每行存储单个字符的列
解决方案
问题根源
- 首次尝试出错是因为
read_file()读取全量文本后返回的是长度为1的字符串向量,转为列表后也仅包含1个元素,绑定到数据框时自然所有内容都落在第一行 - 二次生成csv出错是因为插入逗号后的长字符串仍为单个元素,写入csv时会被识别为单个单元格内容,仅当遇到原文本自带的换行符才会拆分到下一行,所以会出现大量字符集中在首行的问题
实现方法
方法1:直接生成目标数据框(无需中间csv)
直接拆分字符串后构建数据框,代码如下:
library(readr) # 读取原始文本 raw_str <- read_file("StringFilePath.txt") # 按单个字符拆分,转为一维向量 char_vector <- unlist(strsplit(raw_str, split = "")) # 生成含id和单字符列的目标数据框 df <- data.frame( id = seq_along(char_vector), single_char = char_vector )
方法2:生成单字符单列的csv文件
如果需要导出csv供其他工具使用,拆分后直接写入即可:
library(readr) raw_str <- read_file("StringFilePath.txt") char_vector <- unlist(strsplit(raw_str, split = "")) # 写入csv,每行存储一个字符 write.csv( data.frame(single_char = char_vector), file = "StringFilePath.csv", row.names = FALSE )
可选处理
如果需要过滤文本中的换行、空格、制表符等空白字符,可在拆分后新增过滤步骤:
# 过滤所有空白类字符 char_vector <- char_vector[!char_vector %in% c("\n", "\r", "\t", " ")]
内容的提问来源于stack exchange,提问作者MBrad
相关产品推荐
相关产品推荐

