打印双引号时避免在 paste0 中转义字符
Avoid escape characters in paste0 when printing double quotation marks
我正在编写脚本,使用 writeFormula 将公式输入 openxlsx excel sheet。对于该函数,我需要指定一个长度等于单元格数的公式向量。
这是我正在尝试做的事情:
for(i in 2:(nrow(data)+1)){formula_dep<-append(formula_dep, paste0("IFERROR(SEARCH(\"pack\",H",i,"))"))}
writeFormula(wb=file, sheet="data", x=formula_dep, startCol=9, startRow=2)
在输出中,转义字符可能被打印到 excel sheet 中,因此它被损坏了(我必须修复才能打开文件,其中列中没有任何内容它)。
在 R 中,输出是(和往常一样):
"IFERROR(SEARCH(\"pack\",H2))"
虽然转义字符在许多其他任务中不是问题,但在这个任务中,我无法完成这项工作。我不能使用单引号,因为某些未知原因 Excel 不允许在 FIND 或 SEARCH 函数中使用(可能是正则表达式问题)。请在这里帮助解决问题。
注意:我不能只在数据框本身中灌输公式(使用 R 公式),因为它应该对 excel 文件本身中的用户输入起作用。
我对 Excel 方面(在做同样的事情时更改公式)或 R 方面的解决方案持开放态度。
"\"
不存在,它只是表明 print 正在转义 "
,参见:
cat("IFERROR(SEARCH(\"pack\",H2))")
# IFERROR(SEARCH("pack",H2))
这是一个工作示例:
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "Sheet 1")
df <- data.frame(
a = letters[1:3],
)
writeData(wb, sheet = 1, x = df)
f <- paste0("FIND(\"b\",A", seq(nrow(df)) + 1L, ")")
f[ 1 ]
#[1] "FIND(\"b\",A2)"
cat(f[ 1 ])
# FIND("b",A2)
writeFormula(wb, sheet ="Sheet 1", x = f, startCol = 2, startRow = 2)
saveWorkbook(wb, "writeFormulaExample.xlsx", overwrite = TRUE)
我正在编写脚本,使用 writeFormula 将公式输入 openxlsx excel sheet。对于该函数,我需要指定一个长度等于单元格数的公式向量。
这是我正在尝试做的事情:
for(i in 2:(nrow(data)+1)){formula_dep<-append(formula_dep, paste0("IFERROR(SEARCH(\"pack\",H",i,"))"))}
writeFormula(wb=file, sheet="data", x=formula_dep, startCol=9, startRow=2)
在输出中,转义字符可能被打印到 excel sheet 中,因此它被损坏了(我必须修复才能打开文件,其中列中没有任何内容它)。
在 R 中,输出是(和往常一样):
"IFERROR(SEARCH(\"pack\",H2))"
虽然转义字符在许多其他任务中不是问题,但在这个任务中,我无法完成这项工作。我不能使用单引号,因为某些未知原因 Excel 不允许在 FIND 或 SEARCH 函数中使用(可能是正则表达式问题)。请在这里帮助解决问题。
注意:我不能只在数据框本身中灌输公式(使用 R 公式),因为它应该对 excel 文件本身中的用户输入起作用。
我对 Excel 方面(在做同样的事情时更改公式)或 R 方面的解决方案持开放态度。
"\"
不存在,它只是表明 print 正在转义 "
,参见:
cat("IFERROR(SEARCH(\"pack\",H2))")
# IFERROR(SEARCH("pack",H2))
这是一个工作示例:
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "Sheet 1")
df <- data.frame(
a = letters[1:3],
)
writeData(wb, sheet = 1, x = df)
f <- paste0("FIND(\"b\",A", seq(nrow(df)) + 1L, ")")
f[ 1 ]
#[1] "FIND(\"b\",A2)"
cat(f[ 1 ])
# FIND("b",A2)
writeFormula(wb, sheet ="Sheet 1", x = f, startCol = 2, startRow = 2)
saveWorkbook(wb, "writeFormulaExample.xlsx", overwrite = TRUE)