R有像Perl的qw()这样的引用类运算符吗?
任何人都知道,如果R有像Perl的qw()
这样的引用运算符来生成字符向量?
不,但你可以自己写:
q <- function(...) { sapply(match.call()[-1], deparse) }
只是为了显示它的作品:
> q(a, b, c) [1] "a" "b" "c"
我已经将这个函数添加到我的Rprofile.site文件中(如果你不熟悉,
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"
stream行的Hmisc包提供了Cs()
函数来完成这个工作:
library(Hmisc) Cs(foo,bar) [1] "foo" "bar"
对哈德利的回答采用了类似的策略:
Cs function (...) { if (.SV4. || .R.) as.character(sys.call())[-1] else { y <- ((sys.frame())[["..."]])[[1]][-1] unlist(lapply(y, deparse)) } } <environment: namespace:Hmisc>
qw = function(s) unlist(strsplit(s,' '))
更简单:
qw <- function(...){ as.character(substitute(list(...)))[-1] }