我正在编写一个脚本,以便使用writeFormula将公式输入到openxlsx Excel工作表中。对于该函数,我需要指定一个长度等于单元格数量的公式向量。
这是我正在尝试做的事情:
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工作表中,因此它已损坏(我必须修复以打开该文件,该文件中没有任何内容)。
在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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句