R 将扫描函数应用于数据集时如何排除列

R 将扫描函数应用于数据集时如何排除列,r,R,我试图使用扫描函数从R中内置longley数据集的每一列中减去平均值,除了“年”列。 我试过了 sweep(apply(longley,2,mean),2,-c["Year"]) 但这是给我的错误 Error in c["Year"] : object of type 'builtin' is not subsettable 这似乎是一个简单的问题,但我就是不知道如何在此函数中排除“Year”列 谢谢您可以通过以下方式完成此操作: nm1 <- setdiff(colnames(l

我试图使用扫描函数从R中内置longley数据集的每一列中减去平均值,除了“年”列。 我试过了

sweep(apply(longley,2,mean),2,-c["Year"])
但这是给我的错误

Error in c["Year"] : object of type 'builtin' is not subsettable
这似乎是一个简单的问题,但我就是不知道如何在此函数中排除“Year”列


谢谢

您可以通过以下方式完成此操作:

  nm1 <- setdiff(colnames(longley), "Year")
  res1 <- longley[nm1]-colMeans(longley[nm1])[col(longley[nm1])]
或者您可以用colMeans替换apply


你可以不用sweep来做这件事,我明白,但我正在学习R,我正在玩弄sweep函数,可能会复制
 res2 <- sweep(longley[nm1], 2, FUN=`-`, apply(longley[nm1], 2, mean))
 identical(res1, res2)
 #[1] TRUE
 sweep(longley[nm1], 2, FUN=`-`, colMeans(longley[nm1]))