R是否有类似引用的运算符,如Perl的qw()?

r perl

3610 观看

6回复

113 作者的声誉

任何人都知道R是否有类似引号的运算符,如Perl qw()用于生成字符向量?

作者: CassJ 的来源 发布者: 2009 年 2 月 6 日

回应 (6)


23

76711 作者的声誉

决定

不,但你可以自己写:

q <- function(...) {
  sapply(match.call()[-1], deparse)
}

只是为了表明它有效:

> q(a, b, c)
[1] "a" "b" "c"
作者: hadley 发布者: 31.07.2009 07:37

5

51 作者的声誉

qw = function(s) unlist(strsplit(s,' '))
作者: Alex Zolot 发布者: 12.12.2010 08:31

8

2932 作者的声誉

流行的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>
作者: patrickmdnet 发布者: 28.06.2011 11:17

11

69082 作者的声誉

我已将此函数添加到我的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"    
作者: flodel 发布者: 04.04.2012 01:56

3

1014 作者的声誉

更简单:

qw <- function(...){
as.character(substitute(list(...)))[-1]
}
作者: Ben Rollert 发布者: 15.05.2015 10:20

0

564 作者的声誉

用于传递向量的情况的片段,例如, v=c('apple','apple tree','apple cider'). You would get c('"apple"','"apple tree"','"apple cider"')

quoted = function(v){
    base::strsplit(paste0('"', v, '"',collapse = '/|||/'), split = '/|||/',fixed = TRUE)[[1]]
}
作者: Jerry T 发布者: 05.11.2018 04:29
32x32