我具有将数据居中的功能:
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不变。在我的数据中,我有多个字符串列,这些列不会照原样保留。我需要在中心数据均值的最终数据集中使用它们。任何想法表示赞赏!
答案 0 :(得分:3)
我们创建一个逻辑向量,其中列为numeric
('i1'),使用该向量对'mtcars'进行子集化并应用函数
i1 <- sapply(mtcars, is.numeric)
mtcars[i1] <- center_colmeans(mtcars[i1])