如何"评估""paste0"返回的结果?

 MM我男神 发布于 2022-12-27 00:43

似乎我永远不会得到'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

Greg Snow.. 6

由字符串组成的表达式只是字符串,评估字符串只返回字符串(如果在命令行给R一个字符串,那么你只会再次看到字符串).这就是为什么你的尝试都没有成功的原因(做得好,他们只是没做你想做的事).引号不是字符串的一部分,只是它的显示方式,因此gsub无济于事.

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

> library(fortunes)
> fortune(106)

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

> fortune(181)

Personally I have never regretted trying not to underestimate my own future
stupidity.
   -- Greg Snow (explaining why eval(parse(...)) is often suboptimal, answering
      a question triggered by the infamous fortune(106))
      R-help (January 2007)

人们尝试最要做的事情使用paste0,parseeval可以简单地使用其他工具来实现更快,更.构建字符串,解析和评估它就像是说你知道从波士顿到纽约的快捷方式,因此每次你想从A市到B市,你首先从A到波士顿,使用你的快捷方式,然后从纽约前往B.如果您从罗德岛前往新泽西州,这可能会很好,但在伦敦和巴黎之间往返的效率不高.解析构造的字符串也可能导致难以发现错误.

您可以考虑使用像bquote或这样的函数substitute:

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

或其他更直接的工具.如果你告诉我们你想要做什么,那么我们可以建议更好的方法.

1 个回答
  • 由字符串组成的表达式只是字符串,评估字符串只返回字符串(如果在命令行给R一个字符串,那么你只会再次看到字符串).这就是为什么你的尝试都没有成功的原因(做得好,他们只是没做你想做的事).引号不是字符串的一部分,只是它的显示方式,因此gsub无济于事.

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

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

    > fortune(181)
    
    Personally I have never regretted trying not to underestimate my own future
    stupidity.
       -- Greg Snow (explaining why eval(parse(...)) is often suboptimal, answering
          a question triggered by the infamous fortune(106))
          R-help (January 2007)
    

    人们尝试最要做的事情使用paste0,parseeval可以简单地使用其他工具来实现更快,更.构建字符串,解析和评估它就像是说你知道从波士顿到纽约的快捷方式,因此每次你想从A市到B市,你首先从A到波士顿,使用你的快捷方式,然后从纽约前往B.如果您从罗德岛前往新泽西州,这可能会很好,但在伦敦和巴黎之间往返的效率不高.解析构造的字符串也可能导致难以发现错误.

    您可以考虑使用像bquote或这样的函数substitute:

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

    或其他更直接的工具.如果你告诉我们你想要做什么,那么我们可以建议更好的方法.

    2022-12-27 01:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有