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

如何用tidyr的separate函数按反斜杠分割数据列?

解决tidyr::separate按反斜杠分割列的问题

问题出在反斜杠的转义处理上:反斜杠在R字符串和正则表达式中都是特殊字符,需要双重转义才能匹配到实际的反斜杠分隔符。

修正后的代码

library(tidyr)
library(dplyr)

df1 <- structure(list(Parent.objectId = 1:2, Attachment.path = c("photos_attachments\\photos_image-20220602-192146.jpg", 
    "photos_attachments\\photos_image-20220602-191635.jpg")), row.names = 1:2, class = "data.frame")

df2 <- df1 %>%
  separate(Attachment.path, c("a", "b", "c"), sep = "\\\\", remove = FALSE, extra = "drop", fill = "right")

关键说明

  • 你之前用的sep="\\"会被R解析为单个反斜杠传递给正则引擎,但正则里单个反斜杠是无效的转义字符,无法匹配字符串中的实际反斜杠。
  • 要匹配一个实际的反斜杠,需要在R字符串中写\\\\:其中前两个\\是R字符串的转义,代表一个实际的\;后两个\\是正则的转义,最终让正则引擎识别为要匹配的单个反斜杠分隔符。

运行结果

执行后df2会按反斜杠成功分割出列:

> df2
  Parent.objectId                           Attachment.path                a                                      b    c
1               1 photos_attachments\photos_image-20220602-192146.jpg photos_attachments photos_image-20220602-192146.jpg <NA>
2               2 photos_attachments\photos_image-20220602-191635.jpg photos_attachments photos_image-20220602-191635.jpg <NA>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:50:24