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

解决data.table::fread()的cmd参数含单双引号的命令传递问题

解决fread(cmd)中引号冲突的问题

你遇到的核心问题是R字符串中同时包含单引号和双引号时的解析冲突,下面提供两种可行的解决办法:

方法一:转义双引号并统一用双引号包裹cmd字符串

将sed命令中的单引号替换为双引号,同时在R字符串里对双引号进行转义(用\"),正则中的双引号也要额外转义一次(变成\\\"),确保shell能正确识别正则规则:

df <- fread(cmd = "unzip -p -a myfolder.zip | sed -Ee :1 -e \"s/^(([^\\\\\",]|\\\\\"[^\"]*\\\\\")*),/\\\\1|/;t1\"",
      sep = "|",
      header = TRUE,
      stringsAsFactors = FALSE,
      quote = "",
      fill = TRUE)

方法二:用单引号包裹cmd字符串,转义内部单引号

在R中,单引号包裹的字符串里,内部的单引号需要用两个连续单引号('')转义,这样shell能正确解析sed命令:

df <- fread(cmd = 'unzip -p -a myfolder.zip | sed -Ee :1 -e \'\'s/^(([^\",]|\"[^\"]*\")*),/\\1|/;t1\'\'',
      sep = "|",
      header = TRUE,
      stringsAsFactors = FALSE,
      quote = "",
      fill = TRUE)

两种方法都能解决引号冲突问题,推荐第一种,可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:38:27