You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中按\r\n分隔DataFrame文本为多条记录?

在R语言中按\r\n分割DataFrame文本列生成多条记录的方法

首先看你提供的原始DataFrame:

df <- data.frame (text  = c("non consectetur a erat nam at lectus urna duis convallis convallis tellus id interdum velit laoreet id donec ultrices tincidunt arcu non sodales neque sodales ut etiam sit amet nisl purus in mollis nunc sed id semper risus in hendrerit gravida rutrum quisque non tellus orci ac auctor augue mauris augue neque gravida in fermentum et sollicitudin ac orci phasellus egestas \r\n tellus rutrum tellus pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh ipsum consequat nisl vel pretium lectus quam id leo in vitae turpis massa sed elementum tempus egestas sed sed risus pretium quam vulputate dignissim suspendisse in est ante in nibh mauris cursus mattis molestie a iaculis \r\n at erat pellentesque adipiscing commodo elit at imperdiet dui accumsan sit amet nulla facilisi morbi tempus iaculis urna id volutpat lacus laoreet non curabitur gravida arcu ac \r\n tortor dignissim convallis aenean et tortor at risus viverra adipiscing at in tellus integer feugiat scelerisque varius morbi enim nunc faucibus a pellentesque sit amet porttitor eget dolor morbi non arcu "))

以下是两种可行的解决方法:

方法一:基础R实现

利用strsplit分割文本,再将拆分后的列表转换为向量,最后重建DataFrame:

# 按\r\n分割文本
split_text <- strsplit(df$text, "\\r\\n")
# 转换为向量并生成新DataFrame
new_df <- data.frame(text = unlist(split_text))
# 清理文本首尾的多余空格
new_df$text <- trimws(new_df$text)

注:因为\在正则表达式中是特殊字符,所以分隔符需要用双反斜杠\\转义;trimws用于去除分割后文本首尾的空格,让结果更整洁。

方法二:tidyverse工具包实现

如果日常使用tidyverse生态,separate_rows函数可以一步完成分割并生成多行记录,代码更简洁:

library(tidyverse)

new_df <- df %>%
  separate_rows(text, sep = "\\r\\n") %>%
  mutate(text = trimws(text))

注:separate_rows会自动将每个分割后的子字符串转为单独的行,mutate配合trimws完成空格清理。

内容的提问来源于stack exchange,提问作者Alokin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 03:46:07