Подтвердить что ты не робот

Есть ли у R такие котировочные операторы, как Perl qw()?

Кто-нибудь знает, что R имеет такие котировочные операторы, как Perl qw() для генерации векторов символов?

4b9b3361

Ответ 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]
}