[英]use flextable::display() in a function
我正在嘗試在函數內使用flextable::display()
函數,並使用flextable::display()
內函數的參數。 下面是我的功能:
add_footnote <- function(df, col, pattern, symbol){
tmp <- df
pat <- paste0(pattern, " {{x}}")
tmp <- display(tmp,
col_key = col,
i = ~ col == pattern,
pattern = pat,
formatters = list(x ~ as.character(symbol)),
fprops = list(x = fp_text(vertical.align = 'superscript')) )
return(tmp)
}
# Call function
df <- regulartable(head(iris))
add_footnote(df, col = 'Species', pattern = 'setosa', symbol = 'a')
我希望得到一個標a
地方setosa
出現在Species
列,但它提供了以下錯誤指示顯示功能無法看到被傳遞給函數的參數:
eval(as.call(f [[2]]),envir = data)中的錯誤:找不到對象“模式”
有誰知道如何從函數中獲取參數以供內部display()
函數識別?
函數display
很難使用-這就是為什么我寫了flextable::compose
的原因。 它可以依靠整潔的eval語法。 以下2個示例可以為您提供幫助:
library(flextable)
library(officer)
library(rlang)
add_footnote_with_rlang <- function(df, col, pattern, symbol){
form_ <- sprintf("~ %s == '%s'", col, pattern)
colname <- enquo(col)
flextable::compose(
x = df, j = col, i = as.formula(form_),
value = as_paragraph(
as_chunk(!!colname),
as_chunk(symbol, props = fp_text(vertical.align = 'superscript')))
)
}
add_footnote <- function(df, col, pattern, symbol){
form_ <- sprintf("~ %s == '%s'", col, pattern)
flextable::compose(
x = df, j = col, i = as.formula(form_),
value = as_paragraph(
as_chunk(symbol, props = fp_text(vertical.align = 'superscript')))
)
}
# Call function
df <- regulartable(head(iris))
# df <- add_footnote(df, col = 'Species', pattern = 'setosa', symbol = 'a')
df <- add_footnote_with_rlang(df, col = 'Species', pattern = 'setosa', symbol = 'a')
df
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.