【问题标题】:R - How to get max() to return variable names instead of contents of the variables?R - 如何让 max() 返回变量名而不是变量的内容?
【发布时间】:2023-03-26 16:04:01
【问题描述】:

我需要从变量列表中找到最大值。但是,max() 返回变量的内容而不是变量名。有没有办法获取名称而不是内容?

快速示例代码:

jan <- 0
feb <- 0
mar <- 0

#for testing purposes - just select a random month and add 10
s1 <- sample(1:3, 1)
if (s1==1) {
  jan <- jan + 10
}
if (s1==2) {
  feb <- feb + 10
}
if (s1==3) {
  mar <- mar + 10
}

final <- max(jan, feb, mar)

final

结果将始终为 10。这没有帮助...有没有办法让月份/变量名称改为返回? (即“jan”而不是“10”)

谢谢!

【问题讨论】:

  • 我也尝试将标签添加到列表中,但标签没有被 max() 继承
  • 您可以将矢量元素命名为开头,例如:jan &lt;- c(jan=0); feb &lt;- c(feb=0); mar &lt;- c(mar=0),然后final &lt;- which.max(jan, feb, mar) 也将被命名。使用names(final)访问。
  • 感谢您的回复!

标签: r max variable-names


【解决方案1】:

你可以试试:

 c("jan", "feb", "mar")[which.max(c(jan, feb, mar))]
 #[1] "jan"

【讨论】:

  • 谢谢 - 这工作得很好。我曾尝试子集,但显然有问题......
  • @jdfinch3 很高兴知道它有效。您能否在帖子中显示子集的代码。
  • 对不起,因为没用,早就删了。我相信我的顺序倒过来了。谢谢。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 2017-02-26
相关资源
最近更新 更多