Я новичок в разработке 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),...)
sanitize.text.function = clean
? Вам не нужно указывать(s)
, так как это аргумент функции. R будет искать объект s и не найдет его.sanitize.text.function
принимает функцию в качестве аргумента, поэтому имениclean
должно быть достаточно. - person Joris Meys   schedule 24.12.2011trim
из package:gdata для удаления начальных и конечных пробелов. - person IRTFM   schedule 24.12.2011