让我们举例说,我的项目中有很多物品,我已将它放入矢量中。
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"
我遇到的挑战是确保以一种适用于任何数字向量,任何长度和不同命名对象的方式编写函数。定义名称向量并提前标记向量会违反这一点(我认为?)。
提前感谢您的帮助。
答案 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