函数`sample`在R中,这两个代码片段是等价的吗?

Ale*_*son 1 simulation statistics r

这两个代码片段是否相同,即它们是否做同样的事情?

对于我从帮助了解sample他们应该做同样的事情,即两个s1s2是一个随机的子集x.

第一个片段:

sz <- 5
x <- 1:10
s1 <- sample(x,size=sz,replace=F)
Run Code Online (Sandbox Code Playgroud)

第二个片段:

sz <- 5
x <- 1:10
s2 <- c()
idx <- sample(1:length(x),size=sz,replace=F)
for ( i in idx ) {
    s2 <- c(s2,x[i])
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*ich 5

是.

> sz <- 5
> x <- 1:10
> set.seed(21); s1 <- sample(x,size=sz,replace=F)
> sz <- 5
> x <- 1:10
> s2 <- c()
> set.seed(21); idx <- sample(1:length(x),size=sz,replace=F)
> for ( i in idx ) {
+     s2 <- c(s2,x[i])
+ }
> identical(s1,s2)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)