如何在R中将带|分隔符的文本拆分至DataFrame的多列?
解决方法
你的问题根源在于原始文本包含了R控制台输出的冗余内容([1] "和结尾的"),且使用separate_wider_delim时未指定要拆分的目标列。以下是两种可行的解决方式:
方法一:清理文本后用separate_wider_delim拆分
library(tidyverse) txt <- '[1] "TRIGLYCERIDES SERUM|115.3|Normal : Upto 150 Border Line mg/dl"' # 先清理冗余的前缀和后缀 clean_txt <- str_remove_all(txt, '^\\[1\\] "|"$') # 转成表格后指定列进行拆分 tibble(value = clean_txt) %>% separate_wider_delim(cols = value, delim = "|", names = c("Test Name","Result","Unit"))
方法二:清理文本后用read.csv读取
library(tidyverse) txt <- '[1] "TRIGLYCERIDES SERUM|115.3|Normal : Upto 150 Border Line mg/dl"' clean_txt <- str_remove_all(txt, '^\\[1\\] "|"$') # 读取时指定无表头,再手动设置列名 read.csv(text = clean_txt, check.names = FALSE, sep = "|", header = FALSE) %>% set_names(c("Test Name","Result","Unit"))
关键说明
- 用
str_remove_all剔除开头的[1] "和结尾的双引号,得到纯分隔符分隔的有效内容。 separate_wider_delim必须通过cols参数明确指定要拆分的列,这是你之前报错的核心原因。- 使用
read.csv时需加上header = FALSE,因为清理后的文本不包含表头,之后再手动设置列名即可。
内容的提问来源于stack exchange,提问作者ViSa
相关产品推荐
相关产品推荐

