【问题标题】:use of curly brackets within replicate function in R在 R 中的复制函数中使用大括号
【发布时间】:2021-10-07 08:13:56
【问题描述】:
B <- 10000
results <- replicate(B, {
  hand <- sample(hands1, 2)
  (hand[1] %in% aces & hand[2] %in% facecard) | (hand[2] %in% aces & hand[1] %in% facecard)
})
mean(results)

这段代码可以完美运行并完成所需的操作
这是一个蒙特卡罗模拟。我不明白他们在复制函数中放置大括号 {} 的方式。我可以理解该代码的功能,但我无法理解他们放置代码的方式。

【问题讨论】:

    标签: r montecarlo replicate


    【解决方案1】:

    原因是我们有多个表达式

    hand <- sample(hands1, 2)
    

    是第一个表达式,第二个是

     (hand[1] %in% aces & hand[2] %in% facecard) | (hand[2] %in% aces & hand[1] %in% facecard)
    

    即如果只有一个表达式,我们不需要用{}阻塞

    这是一般情况,与replicate 无关,即如果我们使用带有单个表达式的for 循环,则不需要任何{}

    for(i in 1:5)
       print(i)
    

    类似地,类似if/else

    n <- 5
    if(n == 5) 
      print(n)
    

    只有当我们需要多个表达式时才需要它

    【讨论】:

    • 所以传递给复制函数的值是第二个表达式的值。我说得对吗。
    • @NadikaDushan 这是多个表达式,您返回的值来自最后一个评估的表达式。第一个表达式就是sampleing,这是replicate中每次迭代的主要区别@
    猜你喜欢
    • 2017-11-17
    • 2018-07-24
    • 1970-01-01
    • 2019-07-14
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多