Кто-нибудь знает, что R имеет такие котировочные операторы, как Perl qw()
для генерации векторов символов?
Есть ли у R такие котировочные операторы, как Perl qw()?
Ответ 1
Нет, но вы можете сами написать:
q <- function(...) {
sapply(match.call()[-1], deparse)
}
И просто чтобы показать, что он работает:
> q(a, b, c)
[1] "a" "b" "c"
Ответ 2
Я добавил эту функцию в свой файл Rprofile.site(см. ?Startup
, если вы не знакомы)
qw <- function(x) unlist(strsplit(x, "[[:space:]]+"))
qw("You can type text here
with linebreaks if you
wish")
# [1] "You" "can" "type" "text"
# [5] "here" "with" "linebreaks" "if"
# [9] "you" "wish"
Ответ 3
Популярный пакет Hmisc предлагает функцию Cs()
для этого:
library(Hmisc)
Cs(foo,bar)
[1] "foo" "bar"
который использует подобную стратегию для ответа hadley:
Cs
function (...)
{
if (.SV4. || .R.)
as.character(sys.call())[-1]
else {
y <- ((sys.frame())[["..."]])[[1]][-1]
unlist(lapply(y, deparse))
}
}
<environment: namespace:Hmisc>
Ответ 4
qw = function(s) unlist(strsplit(s,' '))
Ответ 5
Еще проще:
qw <- function(...){
as.character(substitute(list(...)))[-1]
}