【问题标题】:R: No quotes when passing a string as an argumentR:将字符串作为参数传递时没有引号
【发布时间】:2014-05-25 18:50:25
【问题描述】:

我想知道如何让 R 将参数视为字符串,即使它没有引号。可能有未知功能bar

foo <- function(x) bar(a))
foo(a abadsf 23)
[1] "a abadsf 23"

【问题讨论】:

  • 您想在变量 a 定义为 "foo" 时打印 "a" 还是我完全不理解?
  • 不,我只是写了a="foo",所以很明显我不想打印“foo”。也许我应该给(function(x) print(bar(a)))(a) [1] "a"
  • 我就是这么说的。您想打印“a”但是有一个变量 a 被定义为“foo”。对吗?
  • 恐怕foo()里面的部分每次都会产生语法错误
  • 你究竟为什么要这样做?

标签: r function


【解决方案1】:

这是在做你想做的事吗?

printname <- function(x) deparse(substitute(x))
printname(foo)
[1] "foo"
printname(bar)
[1] "bar"

编辑: 这可能不会被认为是可接受的,具体取决于这些值的来源,但要包含空格,您可以尝试以下操作:

print.input = function(y=readline()) return(y)

在脚本中的用法:

print.input()
input with spaces
[1] "input with spaces"

【讨论】:

  • 我的错误,它适用于该示例,但不能正常工作。 printname(foo foo) Error: unexpected symbol in "printname(foo foo"
  • @fsmart 抱歉,当时我没有意识到需要空格。我添加了一些内容,但我希望您有理由寻找此功能,并且上面的解决方案还不够。
  • 有趣。谢谢你的想法,但这并不是我真正想要的
【解决方案2】:

您可以使用引号,但这不适用于空格。

deparse(quote(abc))
## [1] "abc"
deparse(quote(abc 1))
## Error: unexpected numeric constant in "deparse(quote(abc 1"

【讨论】:

    猜你喜欢
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2018-03-26
    • 2023-02-04
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多