我是R开发的新手,必须修改一些现有的代码。具体来说,我需要更改print()
调用,以便删除多余的连续空格字符。
我找到了sanitize.text.function
参数,并已成功将我的自定义函数传递给print()函数。它完成了我需要做的事情。该代码如下:
print(xtable(x,...),type="html",
sanitize.text.function = function(s) gsub(" {2,}", "", s),...)
现在我要做的是将“匿名”/“内联”函数代码提取到一个命名函数中,如此...
clean <- function(s) { gsub(" {2,}", "", s) }
print(xtable(x,...),type="html",sanitize.text.function = clean(s),...)
然而,当我执行此操作时,我得到以下内容:
gsub中的错误(“{2,}”,“”,s):找不到对象的
定义函数的愿望是双重的:
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),...)
答案 0 :(得分:7)
sanitize.text.function
需要一个函数但是你传递clean(s)
的结果而不是函数(将评估参数!)。所以你可以使用sanitize.text.function=clean
或者你需要重新映射参数sanitize.text.function=function(x) clean(x)
,这是你正在寻找的lambda(未命名)函数结构(后者只对更复杂的东西有意义,显然)