使用`gsub`删除"print.xtable"的无关空格

d60*_*402 1 r gsub xtable

我是R开发的新手,必须修改一些现有的代码.具体来说,我需要更改一个print()调用,以便删除多余的连续空格字符.

我找到了sanitize.text.function参数,并成功将我的自定义函数传递给print()函数.它完成了我需要做的事情.该代码如下:

print(xtable(x,...),type="html",
      sanitize.text.function = function(s) gsub(" {2,}", "", s),...)
Run Code Online (Sandbox Code Playgroud)

现在我要做的是将"匿名"/"内联"函数代码提取到命名函数中,如此...

clean <- function(s) { gsub(" {2,}", "", s) }
print(xtable(x,...),type="html",sanitize.text.function = clean(s),...)
Run Code Online (Sandbox Code Playgroud)

但是,当我执行此操作时,我得到以下内容:

gsub中的错误("{2,}","",s):找不到对象的'

定义函数的愿望是双重的:

  1. 创建一个可以在其他地方引用的可重用代码块,以及
  2. 能够添加gsub()可能需要的更多或类似的执行,

例如,

clean <- function(s) { 
    gsub(" {2,}", "", s)
    gsub(">(.*?:)", "<span style=float:left>\1</span>", s)
}

print(xtable(x,...),type="html",sanitize.text.function = clean(s),...)
Run Code Online (Sandbox Code Playgroud)

Sim*_*nek 7

sanitize.text.function需要一个功能但你传递的结果clean(s),而不是功能(参数进行评估!).所以你可以使用sanitize.text.function=clean或者如果你需要重新映射sanitize.text.function=function(x) clean(x)你正在寻找的lambda(未命名)函数构造的参数(后者只对更复杂的东西有意义,显然).