如何通过分隔符拆分新行 (\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"
我有一个数据框。我想添加一个换行符“\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"