如何在R统计中组合两个函数?
我正在努力自学R统计学。我发现了一个非常有用的方法,它对我学习这门新语言帮助很大。在其中一个项目中,我们创建一副牌,洗牌,然后发牌 为此,我们创建了两个函数:如何在R统计中组合两个函数?,r,R,我正在努力自学R统计学。我发现了一个非常有用的方法,它对我学习这门新语言帮助很大。在其中一个项目中,我们创建一副牌,洗牌,然后发牌 为此,我们创建了两个函数: shuffle <- function(cards){ random <- sample(1:96, size = 96) cards[random, ] } deal <- function(cards){ cards[1:10,] } 一、 但是,作为练习,我想将这两个函数组合成一个单函数,如下所示:
shuffle <- function(cards){
random <- sample(1:96, size = 96)
cards[random, ]
}
deal <- function(cards){
cards[1:10,]
}
一、 但是,作为练习,我想将这两个函数组合成一个单函数,如下所示:
dealAndSuffle <- function(cards){
random <- sample(1:96, size = 96)
cards <- cards[random, ]
cards[1:10,]
}
dealAndSufflesample()
函数随机选择值,因此即使相同的函数重复两次,也会得到不同的结果。为确保组合函数提供相同的输出,请在检查结果时使用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
#创建玩具数据框
Nsample
提供随机结果set.seed
可能是获得相同结果的线索为了实现@Clemsang所说的,随机顺序每次都会使结果不同。您需要执行类似于set.seed(0)
的操作,然后运行第一个公式。然后将种子设置回零并运行第二个版本。除了前面关于set.seed的评论中提到的内容之外。。。我只是想检查一下,既然你说函数“不工作”,那么函数名中的拼写是否可能是问题所在?也就是说,您可能正在定义函数dealAndSuffle(不带“h”),但调用函数dealAndShuffle(带“h”)
# 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