【问题标题】:eval() and parse() returns? [closed]eval() 和 parse() 返回? [关闭]
【发布时间】:2017-04-01 19:26:03
【问题描述】:

连接命令生成列表:

line <- cat("list(\"iris\" = iris, \"cars\" = mtcars)")

eval(parse(text = line))

似乎以 ?

【问题讨论】:

  • 在尝试解析之前打印出line
  • cat 打印但不存储其值,正如 rawr 建议的那样。 Fwiw,我认为大多数人尽可能避免使用 eval-parse。
  • 还有别的办法吗?动态构造列表怎么样(我有很多变量通过管道传递到列表中)
  • 您可能正在寻找mget 函数。
  • @laemto 你为什么要 catting,将输出发送到屏幕,然后使用 capture.output 将其放回字符串中?如果要构造字符串进行评估,请使用paste 和paste0,因为这将返回一个字符串,然后您可以评估:eval(parse(text=paste0("list(","x=1",")")))

标签: r


【解决方案1】:

cat 返回一个不可见的NULL。

help("parse") 说:

文件
一个连接,或一个给出文件名的字符串,或 从中读取表达式的 URL。如果文件是“”并且缺少文本 或 NULL 然后从控制台获取输入。

由于您没有将任何参数传递给parse,R 正在等待控制台中的输入。

但是,除此之外,我只能说您不应该使用parse 来构建列表。当然有更好的方法,但不幸的是,您没有充分解释您的确切输入是什么、您的约束是什么以及预期的结果是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2014-02-12
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多