R 如何";“评估”;“返回的结果”;粘贴0";?

R 如何";“评估”;“返回的结果”;粘贴0";?,r,expression,eval,paste,bioconductor,R,Expression,Eval,Paste,Bioconductor,似乎我永远无法计算“paste0”的返回值以及任何已引用的字符。我是否必须使用“substr”或“gsub”删除这些引号 eval(paste0('1','+','1')) [1] "1+1" eval(expression(paste0('1','+','1'))) [1] "1+1" eval(expression("1+1")) [1] "1+1" eval("1+1") [1] "1+1" eval(expression(1+1)) [1] 2 eval(1+1)

似乎我永远无法计算“paste0”的返回值以及任何已引用的字符。我是否必须使用“substr”或“gsub”删除这些引号

eval(paste0('1','+','1')) 
[1] "1+1" 
eval(expression(paste0('1','+','1'))) 
[1] "1+1" 
eval(expression("1+1")) 
[1] "1+1" 
eval("1+1") 
[1] "1+1" 
eval(expression(1+1)) 
[1] 2 
eval(1+1) 
[1] 2

由字符串组成的表达式就是字符串,对字符串求值只返回字符串(如果在命令行中给R一个字符串,那么您将再次看到该字符串)。这就是为什么你的尝试没有成功的原因(好吧,他们确实成功了,只是没有达到你想要的效果)。引号不是字符串的一部分,只是它的显示方式,因此
gsub
不会有帮助

您需要将字符串解析为表达式,如注释所示,但请注意以下几点:

> library(fortunes)
> fortune(106)

If the answer is parse() you should usually rethink the question.
   -- Thomas Lumley
      R-help (February 2005)

人们尝试使用
paste0
parse
eval
做的大多数事情都可以使用其他工具更快、更简单地完成。构造一个字符串,解析并评估它就像说你知道从波士顿到纽约的捷径,因此每次你想从a市到B市,你首先从a市到波士顿,使用你的捷径,然后从纽约到B市。如果你从罗德岛到新泽西,但在伦敦和巴黎之间的交通效率不是很高。解析构造的字符串也会导致难以发现的bug

您可以考虑使用诸如<代码> bQue>代码>或<代码>替代< /代码>:

> eval( bquote( .(a) + .(b), list(a=1, b=2) ) )
[1] 3

或其他更直接的工具。如果您告诉我们您正在尝试做什么,那么我们可能会建议更好的方法。

由字符串组成的表达式就是字符串,对字符串求值只会返回字符串(如果您在命令行中给R一个字符串,那么您将再次看到该字符串)。这就是为什么你的尝试没有成功的原因(好吧,他们确实成功了,只是没有达到你想要的效果)。引号不是字符串的一部分,只是它的显示方式,因此
gsub
不会有帮助

您需要将字符串解析为表达式,如注释所示,但请注意以下几点:

> library(fortunes)
> fortune(106)

If the answer is parse() you should usually rethink the question.
   -- Thomas Lumley
      R-help (February 2005)

人们尝试使用
paste0
parse
eval
做的大多数事情都可以使用其他工具更快、更简单地完成。构造一个字符串,解析并评估它就像说你知道从波士顿到纽约的捷径,因此每次你想从a市到B市,你首先从a市到波士顿,使用你的捷径,然后从纽约到B市。如果你从罗德岛到新泽西,但在伦敦和巴黎之间的交通效率不是很高。解析构造的字符串也会导致难以发现的bug

您可以考虑使用诸如<代码> bQue>代码>或<代码>替代< /代码>:

> eval( bquote( .(a) + .(b), list(a=1, b=2) ) )
[1] 3
或其他更直接的工具。如果您告诉我们您正在尝试做什么,那么我们可能能够建议更好的方法。

eval(解析(text=paste0('1','+','1'))
eval(解析(text=paste0('1','+','1'))