R 将字符向量转换为函数调用

R 将字符向量转换为函数调用,r,R,我怎么能吃这个 d <- "3:10" 我以前见过这种情况,搜索了很多遍,但什么都想不起来 这是我试过的 > eval(d) # [1] "3:10" > eval(noquote(d)) # [1] 3:10 > noquote(eval(d)) # [1] 3:10 > evalq(d) # [1] "3:10" > substitute(d) # d 我认为您正在寻找可怕的eval(parse(…)构造 尝试: 还有,干什么!我不想这么做,但它比ev

我怎么能吃这个

d <- "3:10"
我以前见过这种情况,搜索了很多遍,但什么都想不起来

这是我试过的

> eval(d)
# [1] "3:10"
> eval(noquote(d))
# [1] 3:10
> noquote(eval(d))
# [1] 3:10
> evalq(d)
# [1] "3:10"
> substitute(d)
# d

我认为您正在寻找可怕的
eval(parse(…)
构造

尝试:

还有,干什么!我不想这么做,但它比
eval(parse(…)
更快(但是您在注释中的方法更快)


fun1我认为您正在寻找可怕的
eval(解析(…)
构造

尝试:

还有,干什么!我不想这么做,但它比
eval(parse(…)
更快(但是您在注释中的方法更快)


fun1啊哈!好奇,为什么它是“可怕的”?很多人都这么说,尤其是关于
eval
。与《财富》(106)
杂志的《财富》(106)
s@RichardScriven同行是否更好?我会找出几个链接。不过我自己从来没有遇到过任何问题。@RichardScriven实际上提出了
eval(parse(…)
构造最相关的原因。关于你的子问题,数据是如何以这种形式出现的?我正在解析来自的文本,为它所附带的数据创建标题向量。所以我想创建这些序列,以配合@DavidArenburg的结果,试试
daha!好奇,为什么它是“可怕的”?很多人都这么说,尤其是关于
eval
。与《财富》(106)
杂志的《财富》(106)
s@RichardScriven同行是否更好?我会找出几个链接。不过我自己从来没有遇到过任何问题。@RichardScriven实际上提出了
eval(parse(…)
构造最相关的原因。关于你的子问题,数据是如何以这种形式出现的?我正在解析来自的文本,为它所附带的数据创建标题向量。因此,我想创建这些序列,以与@davidernburg的结果一致,尝试
d
> eval(d)
# [1] "3:10"
> eval(noquote(d))
# [1] 3:10
> noquote(eval(d))
# [1] 3:10
> evalq(d)
# [1] "3:10"
> substitute(d)
# d
d <- "3:10"
eval(parse(text = d))
# [1]  3  4  5  6  7  8  9 10
Reduce(":", as.numeric(strsplit(d, ":", TRUE)[[1]]))
# [1]  3  4  5  6  7  8  9 10
fun1 <- function() Reduce(":", as.numeric(strsplit(d, ":", TRUE)[[1]]))
fun2 <- function() eval(parse(text = d))
fun3 <- function() {
  s <- as.numeric(strsplit(d, ":", fixed = TRUE)[[1]])
  s[1]:s[2]
}

library(microbenchmark)
microbenchmark(fun1(), fun2(), fun3())
# Unit: microseconds
#    expr     min       lq   median       uq     max neval
#  fun1()  24.375  26.0865  32.2865  55.8070 113.751   100
#  fun2() 108.192 112.4680 121.4490 204.8375 453.720   100
#  fun3()   8.553  10.6920  12.8300  20.9550  40.198   100