R:如何简单地重复一个命令?

R:如何简单地重复一个命令?,r,R,我试图重复这个简单的命令10000次(通过一个简单的解决方案): Tandem您可以使用replicate或sapply: R> colMeans(replicate(10000, sample(100, size=815, replace=TRUE, prob=NULL))) R> sapply(seq_len(10000), function(...) mean(sample(100, size=815, replace=TRUE, prob=NULL))) replicate

我试图重复这个简单的命令10000次(通过一个简单的解决方案):


Tandem您可以使用
replicate
sapply

R> colMeans(replicate(10000, sample(100, size=815, replace=TRUE, prob=NULL)))
R> sapply(seq_len(10000), function(...) mean(sample(100, size=815, replace=TRUE, prob=NULL)))

replicate
是一个包装器,用于重复计算表达式(通常涉及随机数生成)的
sapply

您可以使用
replicate
sapply

R> colMeans(replicate(10000, sample(100, size=815, replace=TRUE, prob=NULL)))
R> sapply(seq_len(10000), function(...) mean(sample(100, size=815, replace=TRUE, prob=NULL)))

replicate
是一个包装器,用于重复计算表达式(通常涉及随机数生成)的
sapply

现在还不清楚你问这个问题是否是因为你是编程新手,但如果是这样的话,那么你可能应该阅读一些关于编程的基本资料

如果您已经了解了控制结构,并且希望了解特定于R的实现细节,那么有很多教程,例如。另一个答案是使用
replicate
colMeans
,这是用R编写时的惯用用法,可能也非常快,如果您想要10000次迭代,这一点很重要

然而,处理这类问题的一种更为普遍且(对于初学者而言)简单的方法是使用
for
循环

> for (ii in 1:5) {
+ print(ii)
+ }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
>
因此,在您的情况下,如果您只想将
Tandem
对象的平均值打印5次:

for (ii in 1:5) {
    Tandem <- sample(OUT, size = 815, replace = TRUE, prob = NULL)
    TandemMean <- mean(Tandem)
    print(TandemMean)
}
…创建此输出:

> set.seed(1234)
> OUT <- runif(100000, 1, 2)
> tandem <- list()
> for (ii in 1:10000) {
+     tandem[[ii]] <- mean(sample(OUT, size = 815, replace = TRUE, prob = NULL))
+ }
> 
> tandem[1]
[[1]]
[1] 1.511923

> tandem[100]
[[1]]
[1] 1.496777

> tandem[20:25]
[[1]]
[1] 1.500669

[[2]]
[1] 1.487552

[[3]]
[1] 1.503409

[[4]]
[1] 1.501362

[[5]]
[1] 1.499728

[[6]]
[1] 1.492798

> 
>设置种子(1234)
>输出串联(ii输入1:10000){
+串联[[ii]]
>串联[1]
[[1]]
[1] 1.511923
>串联[100]
[[1]]
[1] 1.496777
>串联[20:25]
[[1]]
[1] 1.500669
[[2]]
[1] 1.487552
[[3]]
[1] 1.503409
[[4]]
[1] 1.501362
[[5]]
[1] 1.499728
[[6]]
[1] 1.492798
> 

不清楚你问这个问题是否是因为你是编程新手,但如果是这样的话,你可能应该阅读一些编程方面的基本资料

如果您已经了解了控制结构,并且希望了解特定于R的实现细节,那么有几十个教程,例如。另一个答案使用了
replicate
colMeans
,这在用R编写时是惯用的,可能也很快,如果您想要10000次迭代,这一点很重要。

然而,处理这类问题的一种更为普遍且(对于初学者而言)简单的方法是使用
for
循环

> for (ii in 1:5) {
+ print(ii)
+ }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
>
因此,在您的情况下,如果您只想将
Tandem
对象的平均值打印5次:

for (ii in 1:5) {
    Tandem <- sample(OUT, size = 815, replace = TRUE, prob = NULL)
    TandemMean <- mean(Tandem)
    print(TandemMean)
}
…创建此输出:

> set.seed(1234)
> OUT <- runif(100000, 1, 2)
> tandem <- list()
> for (ii in 1:10000) {
+     tandem[[ii]] <- mean(sample(OUT, size = 815, replace = TRUE, prob = NULL))
+ }
> 
> tandem[1]
[[1]]
[1] 1.511923

> tandem[100]
[[1]]
[1] 1.496777

> tandem[20:25]
[[1]]
[1] 1.500669

[[2]]
[1] 1.487552

[[3]]
[1] 1.503409

[[4]]
[1] 1.501362

[[5]]
[1] 1.499728

[[6]]
[1] 1.492798

> 
>设置种子(1234)
>输出串联(ii输入1:10000){
+串联[[ii]]
>串联[1]
[[1]]
[1] 1.511923
>串联[100]
[[1]]
[1] 1.496777
>串联[20:25]
[[1]]
[1] 1.500669
[[2]]
[1] 1.487552
[[3]]
[1] 1.503409
[[4]]
[1] 1.501362
[[5]]
[1] 1.499728
[[6]]
[1] 1.492798
> 

这与什么编程或脚本语言有关?它对其他有类似问题的人很有用。对于那些只想知道你到底在说什么的人,你能展示一下你已经尝试并拒绝的复杂而艰难的解决方案吗?这与什么编程或脚本语言有关?这将是我们的问题对于其他有类似问题的人来说,这是一个很好的选择。对于那些只想知道你到底在说什么的人来说,你能展示你已经尝试并拒绝的复杂而艰难的解决方案吗?