下面的代码是用R写的:
Gems <- data.frame(
Color = c("Red", "Blue", "Purple", "Orange",
"Green", "Pink", "White", "Black", "Yellow"),
Weight = round(runif(9,0.5,5),2),
Value = round(abs(rnorm(9,0,5))+0.5,2)
)
InitilzePop <- function(size){
pop <- (t(sapply(1:size, function(pop) round(runif(nrow(Gems),0, 1), 0))))
colnames(pop)<- Gems$Color
return(pop)
}
我想改变代码round(runif(nrow(Gems),0, 1), 0)
的这一部分,以一种方式,而不是从随机值生成输出,它从一个向量中获取基于Gems
大小的值,例如,
vector <- c(1,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,1,
1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0)
我想知道是否有可能不使用base::sample()
.请考虑以下几点:
myvector <- c(1,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0)
当调用InitilzePop(2)
时,输出将是:
#> Red Blue Purple Orange Green Pink White Black Yellow
#> [1,] 1 1 0 0 0 1 0 1 0
#> [2,] 0 1 1 1 0 0 0 0 1
矢量是:
myvector <- c(1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0)
Hence, next time 当调用InitilzePop(2)
时,输出将是:
#> Red Blue Purple Orange Green Pink White Black Yellow
#> [1,] 1 1 1 1 0 0 1 1 1
#> [2,] 0 0 1 1 1 0 0 1 1
矢量是:
myvector <- c(1,0)