访问R中数据框的特定列子集

时间:2018-07-05 22:30:29

标签: r

我有一个向量,其中包括数据帧的列索引的子集。 我也有两个参数函数(交叉)。即

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)
}

非常感谢您!

0 个答案:

没有答案