【发布时间】:2017-09-15 08:55:23
【问题描述】:
例如,假设我的项目有许多对象,我已将它们放入向量中。
foo <- 10
bar <- 9
pleb <- 4
eian <- 8
pizzaParlor <- c(foo, bar, pleb, eian)
通过创建下面的函数,我可以快速确定这家披萨店最好吃的东西。
tastiestFood = function(anyVector) {
paste("Item #",
which.max(anyVector),
"of",
deparse(substitute(anyVector)),
"is the tastiest!")
}
tastiestFood(pizzaParlor)
[1] "Item # 1 of pizzaParlor is the tastiest!"
我将如何获得此输出?
[1] "foo"
我遇到的挑战是确保函数的编写方式适用于任何数字向量、任何长度以及不同命名的对象。定义名称向量并提前标记向量会违反这一点(我认为?)。
提前感谢您的帮助。
【问题讨论】:
-
好吧,如果不以任何形式定义名称,您将无法获得命名输出。您需要有任何与
which.max(anyVector)的位置相对应的字符串才能将该字符串输出到您的paste()调用中。 -
pizzaParlor <- c(foo=foo, bar=bar, pleb=pleb, eian=eian)... 然后(如 LeoP. 评论)在您的函数中names(anyVector)[which.max(anyVector)] -
感谢您的评论 Leo + jogo。我的 Python 同事可以直接使用字典调用变量名称,所以我希望 R 中有类似的东西。根据您的说法,向量需要设置为从一开始就指定的名称。如果我有大量未命名的向量来处理嵌套在其中的对象,那么如果我可以直接从变量名中调用该名称,那就太棒了。
-
从头开始。我查看了 Python 方法,这与我在使用 R 时遇到的问题基本相同。在构建字典时需要预先定义它才能调用变量名。
-
是的,我看不到您可以从任何对象中获取变量名而不预先定义它们的情况。我下面的解决方案至少会在有名称时使用名称,并且仅在未命名时使用对象内的位置。
标签: r variables object vector names