gpt4 book ai didi

r - R:从变量创建命名向量

转载 作者:行者123 更新时间:2023-12-03 22:30:48 25 4
gpt4 key购买 nike

在函数内部,我定义了一堆标量变量,如下所示:

a <- 10
b <- a*100
c <- a + b


在函数的最后,我想以最少的编码在命名向量中返回 a,b,c,其名称与变量相同,即我不想这样做:

c( a = a, b = b, c = c )


有没有这样做的语言构造?例如,如果我只是简单地执行 return(c(a,b,c)),它将返回一个未命名的向量,这不是我想要的。我目前有一种很怪异的方法:

> cbind(a,b,c)[1,]
a b c
10 1000 1010


有没有更好,更简单的方法?

最佳答案

这是为您执行此操作的函数,它还使您可以有选择地命名一些值。除了获得未评估表达式并将其解析为单个字符向量的技巧外,它没有太多其他用途。

c2 <- function(...) {
vals <- c(...)

if (is.null(names(vals))) {
missing_names <- rep(TRUE, length(vals))
} else {
missing_names <- names(vals) == ""
}
if (any(missing_names)) {
names <- vapply(substitute(list(...))[-1], deparse, character(1))
names(vals)[missing_names] <- names[missing_names]
}

vals
}

a <- 1
b <- 2
c <- 3

c2(a, b, d = c)
# a b d
# 1 2 3


请注意,不能保证产生语法上有效的名称。如果需要,将 make.names函数应用于 names向量。

c2(mean(a,b,c))
# mean(a, b, c)
# 1


同样,与使用替代功能的任何功能一样, c2比在另一个功能中使用更适合交互式使用。

关于r - R:从变量创建命名向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5042806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com