我试图从R中的内置longley数据集的每一列中减去均值(使用扫描函数),除了'Year'列。 我试过了
sweep(apply(longley,2,mean),2,-c["Year"])
但是给了我错误
Error in c["Year"] : object of type 'builtin' is not subsettable
这似乎是一个简单的问题,但我无法弄清楚如何排除此功能中的“年份”列
谢谢
答案 0 :(得分:0)
您可以使用以下方式执行此操作:
nm1 <- setdiff(colnames(longley), "Year")
res1 <- longley[nm1]-colMeans(longley[nm1])[col(longley[nm1])]
或使用sweep
res2 <- sweep(longley[nm1], 2, FUN=`-`, apply(longley[nm1], 2, mean))
identical(res1, res2)
#[1] TRUE
或者您可以将apply
替换为colMeans
sweep(longley[nm1], 2, FUN=`-`, colMeans(longley[nm1]))