【问题标题】:R: Find position of an element inside a vectorR:查找向量内元素的位置
【发布时间】:2020-12-29 16:37:58
【问题描述】:

我有这个带有名字的向量:

students <- c("Mykola", "Li", "Daniel", "Jan", "Lukas")

我想找到一个随机顺序,其中“Jan”在“Li”之后,但不一定紧随其后。 我目前的想法是,只要 Jan 的向量位置小于 Li 的位置,while() 循环就会一次又一次地抽取随机样本。但是我不知道如何找出向量的位置。

到目前为止我的代码:

students <- c("Mykola", "Li", "Daniel", "Jan", "Lukas")
order <- function()
{
  draw <- sample(students, 5, replace = FALSE)
  print(draw)
  while("vector position Jan" < "vector position Li")
  {
    draw
    print(draw)
  }
}
print(draw)

有什么想法吗?

【问题讨论】:

    标签: r while-loop


    【解决方案1】:

    您可以使用which获取位置:

    random_order <- function(students)
    {
      positon_jan = 0
      positon_li = Inf
      while(positon_jan < positon_li)
      {
        draw <- sample(students, 5)
        positon_jan <- which(draw == 'Jan')
        positon_li <- which(draw == 'Li')
      }
      return(draw)
    }
    random_order(students)
    #[1] "Li"     "Jan"    "Daniel" "Mykola" "Lukas" 
    random_order(students)
    #[1] "Lukas"  "Daniel" "Mykola" "Li"     "Jan"   
    random_order(students)
    #[1] "Li"     "Daniel" "Mykola" "Lukas"  "Jan"   
    

    【讨论】:

    • 谢谢!为什么jan和li开头的位置等于“0”和“inf”?
    • 即第一次初始化条件为TRUE等值。 0 &lt; Inf 给出 TRUE,你也可以使用 1 和 2,因为 1 &lt; 2 也是 TRUE
    猜你喜欢
    • 2015-04-15
    • 2018-11-26
    • 1970-01-01
    • 2022-01-08
    • 2010-11-13
    • 2016-06-11
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多