将功能应用于特定列,同时保留其他列

时间:2020-06-25 18:58:27

标签: r dplyr

我具有将数据居中的功能:

    center_colmeans <- function(x) {
      xcenter = colMeans(x)
      x - rep(xcenter, rep.int(nrow(x), ncol(x)))
    }
  
   mtcars$cyl <- as.character(mtcars$cyl)
   center_colmeans(mtcars)

如果我删除cyl(因为它是一个字符串),则运行良好。像这样:

   center_colmeans(mtcars[4:8])

但是我想在所有数值变量上运行“ center_colmeans”,同时保持cyl不变。在我的数据中,我有多个字符串列,这些列不会照原样保留。我需要在中心数据均值的最终数据集中使用它们。任何想法表示赞赏!

1 个答案:

答案 0 :(得分:3)

我们创建一个逻辑向量,其中列为numeric('i1'),使用该向量对'mtcars'进行子集化并应用函数

i1 <- sapply(mtcars, is.numeric)
mtcars[i1] <- center_colmeans(mtcars[i1])
相关问题