我有一个向量,其中包括数据帧的列索引的子集。 我也有两个参数函数(交叉)。即
ind <- c(1, 9, 8, 6)
df<- replicate(10, create.df())
create.df <- function() {
rand.num <-
c(
sample(1:10, 1),
sample(1:6, 1),
sample(1:15, 1),
sample(1:8, 1),
sample(1:8, 1),
sample(1:14, 1),
sample(1:12, 1),
sample(1:4, 1),
sample(1:2, 1)
)
return(rand.num)
}
我正在寻找一种性能最高的方法来执行以下操作:
cross.over(df[, ind[1], df[, ind[2])
cross.over(df[, ind[1], df[, ind[3])
cross.over(df[, ind[1], df[, ind[4])
cross.over(df[, ind[2], df[, ind[3])
cross.over(df[, ind[2], df[, ind[4])
cross.over(df[, ind[3], df[, ind[4])
交叉功能如下:
cross.over <- function(column1, column2) {
cpt <- sort(sample(1:9, 2))
col_new <- as.data.frame(matrix(NA, ncol = 9))
col_new[, 1:cpt[1]] <- t(column1)[, 1:cpt[1]]
col_new[, (cpt[1] + 1):cpt[2]] <-
t(column1)[, (cpt[1] + 1):cpt[2]]
if (cpt[2] == 9) {
col_new[, cpt[2]:9] <- t(column1)[, cpt[2]:9]
} else{
col_new1[, (cpt[2] + 1):9] <- t(column1)[, (cpt[2] + 1):9]
}
return(col_new)
}
非常感谢您!