【发布时间】: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函数才能使其正常工作。 -
试试
dplyrx <- "c"; data_frame(a = 1, b = 45) %>% mutate(UQ(x) := 100) %>% unlist# a b c 1 45 100或V <- c(a = 1, b = 45); V[x] <- 100 -
我希望看到一个 R 扩展,可以让你做到这一点。在我看来,这是一件很明显的事情。可以使用双反引号,因为这在常规 R 代码中永远不会出现,并且反引号已经用于指定参数标签的特殊处理:
V = c(a=1, b=45 ``x``=100)
标签: r vector named-parameters