繁体   English   中英

如何在R统计中组合两个函数?

[英]How to combine two functions in R statistics?

我正在尝试自己学习 R 统计。 我找到了一个非常有用的教程,里面有适合初学者的不错的项目,它对我学习这门新语言有很大帮助。 在其中一个项目中,我们创建了一副牌,洗牌,然后发牌。

为此,我们创建了两个函数:

shuffle <- function(cards){
  random <- sample(1:96, size = 96)
  cards[random, ]
}

deal <- function(cards){
  cards[1:10,]
}

它们按预期工作。 deck是我的数据框:

deck2 <- shuffle(deck)
deal(deck2)
         Ability Card.Value Aura
  55     Int          8   -1
  81    Will          4    0
  10     Agi          5    0
  43     Int          4    0
  52     Int          6   -1
  ...

但是,作为练习,我想将这两个函数合并为一个函数,如下所示:

dealAndSuffle <- function(cards){
  random <- sample(1:96, size = 96)
  cards <- cards[random, ]
  cards[1:10,]  
}

但是,这个新功能不起作用。 任何人都可以指出我的错误吗?

sample()函数随机选择值,因此即使相同的函数重复两次,您也会得到不同的结果。 为确保您的组合函数为您提供相同的输出,请在检查结果时使用set.seed()函数:

# Create a toy data frame
N <- 96
deck <- data.frame( Ability = sample(c("Int","Will","Agi"), N,  replace=T ), Card.Value=rep(1:24, each=4))


shuffle <- function(cards){
  random <- sample(1:96, size = 96)
  cards[random, ]
}

deal <- function(cards){
  cards[1:10,]
}



dealAndShuffle <- function(cards){
  random <- sample(1:96, size = 96)
  cards <- cards[random, ]
  cards[1:10,]  
}

# Set seed to insure reproducibility
set.seed(12345)
deck2 <- shuffle(deck)
deal(deck2)
#    Ability Card.Value
# 14    Will          4
# 51     Agi         13
# 80     Agi         20
# 90     Int         23
# 92     Int         23
# 24     Agi          6
# 58     Int         15
# 75    Will         19
# 88     Agi         22
# 2      Int          1


# Set seed to insure reproducibility
set.seed(12345)
dealAndShuffle(deck)
#    Ability Card.Value
# 14    Will          4
# 51     Agi         13
# 80     Agi         20
# 90     Int         23
# 92     Int         23
# 24     Agi          6
# 58     Int         15
# 75    Will         19
# 88     Agi         22
# 2      Int          1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM