[英]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.