在R

时间:2017-04-19 08:32:18

标签: r variables object vector names

让我们举例说,我的项目中有很多物品,我已将它放入矢量中。

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"

我遇到的挑战是确保以一种适用于任何数字向量,任何长度和不同命名对象的方式编写函数。定义名称向量并提前标记向量会违反这一点(我认为?)。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以检查函数中输入向量中是否存在名称,如果有,则输出它们,否则输出位置。

尝试

ifelse(!is.null(names(anyVector)), names(anyVector)[which.max(anyVector)], 
  which.max(anyVector))

paste()来电,而不是当前which.max(anyVector)

数据:

foo <- 10
bar <- 9
pleb <- 4
eian <- 8

pizzaParlor <- c(foo, bar, pleb, eian)
pizzaParlor2 <- c(foo=foo, bar=bar, pleb=pleb, eian=eian)

功能:

tastiestFood = function(anyVector) {
    paste("Item #", 
          ifelse(!is.null(names(anyVector)), names(anyVector)[which.max(anyVector)], 
                 which.max(anyVector)), 
          "of", 
          deparse(substitute(anyVector)), 
          "is the tastiest!")
}

输出:

> tastiestFood(pizzaParlor)
[1] "Item # 1 of pizzaParlor is the tastiest!"

> tastiestFood(pizzaParlor2)
[1] "Item # foo of pizzaParlor2 is the tastiest!"

答案 1 :(得分:0)

试试这个:

@Component

输出:

directives