如何通过分隔符拆分新行 (\n)?

How do I split a new line(\n) via a delimiter?

我有一个数据框。我想添加一个换行符“\n”和“?”或“①”作为分隔符。前任) ”?” -> "?\n" 键入 "?\n" 似乎会导致语法错误。

我有一个数据框:

sample : 
aa <- data.frame(c('[1] aaaaa? ① bbbbb ② ccccc','[2] ccccc ① fffff  ② ggggg'))


[1] aaaaa ① bbbbb ② ccccc
[2] ccccc ① fffff ② ggggg


结果:

[1] aaaaaa? \n
① bbbbb \n
② ccccc
[2] cccccccc? \n
① fffff \n
② ggggg

打印到控制台时,您必须使用 cat() 而不是 print()。例如:

aa <- data.frame(text = c('[1] aaaaa?\n① bbbbb\n② ccccc\n','[2] ccccc\n① fffff\n② ggggg\n'))
print(aa)
#                             text
# 1 [1] aaaaa?\n① bbbbb\n② ccccc\n
# 2  [2] ccccc\n① fffff\n② ggggg\n

cat(unlist(aa), sep="")
# [1] aaaaa?
# ① bbbbb
# ② ccccc
# [2] ccccc
# ① fffff
# ② ggggg

如果您想以编程方式添加新行,可以使用 gsub:

result = gsub(pattern = "([①②])" ,
     replacement = "\n\1", x = aa[[1]])

result
# [1] 1] "[1] aaaaa? \n① bbbbb \n② ccccc" "[2] ccccc \n① fffff  \n② ggggg"
cat(result, sep = "\n")
# [1] aaaaa? 
# ① bbbbb 
# ② ccccc
# [2] ccccc 
# ① fffff  
# ② ggggg

正如 dcarlson 所解释的,在 R 控制台中 print 将打印 \n 个字符,cat 会将它们解释为换行符。

我们可以使用 tidyr 包中的 separate_rows

library(tidyr)

separate_rows(aa, text, sep = "\n")
  text        
  <chr>       
1 "[1] aaaaa?"
2 "<U+2460> bbbbb"   
3 "<U+2461> ccccc"   
4 ""          
5 "[2] ccccc" 
6 "<U+2460> fffff"   
7 "<U+2461> ggggg"