【问题标题】:Is there a concise way to specify an element name with a variable when defining an R vector with c()用 c() 定义 R 向量时,是否有一种简洁的方法可以用变量指定元素名称
【发布时间】:2017-10-25 05:06:08
【问题描述】:

假设我们正在定义一个 R 向量 V,其中包含三个元素,其名称分别为“a”、“b”和变量 x 中的值。有没有一种简洁的方法来做到这一点? IE。在下文中,可以将 ?x 替换为提取 x 的值并将其用作名称的东西吗?

V = c(a=1, b=45, ?x=100)

这可行:

V = setNames(c(1, 45, 100), c("a", "b", x))

但如果有一种方法可以做到这一点,而不使用 setNames,在定义语句中保持名称和数据值紧密配对,那肯定会很好。

【问题讨论】:

  • 一种更简洁的方法是调整您的代码V <- c(a=1, b=45, setNames(100, x))。它仍然使用setNames,但将名称和数据放在一起。我意识到这不是一个大规模的解决方案,虽然......
  • 这对我来说没有多大意义。如果从字面上理解a,那么c 应该如何知道x 是一个变量?您可能需要编写自己的 c 函数才能使其正常工作。
  • 试试dplyr x <- "c"; data_frame(a = 1, b = 45) %>% mutate(UQ(x) := 100) %>% unlist# a b c 1 45 100V <- c(a = 1, b = 45); V[x] <- 100
  • 我希望看到一个 R 扩展,可以让你做到这一点。在我看来,这是一件很明显的事情。可以使用双反引号,因为这在常规 R 代码中永远不会出现,并且反引号已经用于指定参数标签的特殊处理:V = c(a=1, b=45 ``x``=100)

标签: r vector named-parameters


【解决方案1】:

来自R语言定义:

每个参数 [在函数调用中] 可以被标记 (tag=expr),或者只是一个简单的 表达。它也可以是空的,也可以是特殊的之一 标记“...”、“..2”等

标签可以是标识符或文本字符串。

例子:

f(x)
g(tag = value, , 5)
"odd name"("strange tag" = 5, y)
(function(x) x^2)(5)

据我所知,没有特殊的语法可以将标签解释为符号或通用表达式并替换为它的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多