对不起,令人困惑的标题......这是我想要做的一个可能的解决方案:
> df <- data.frame(a=c(1,2,3),b=c(4,5,6))
> v <- colMeans(df)
> df
a b
1 1 4
2 2 5
3 3 6
> v
a b
2 5
> t(t(df)-v)
a b
[1,] -1 -1
[2,] 0 0
[3,] 1 1
但是数据框将具有命名的列和行并且非常大。这就是为什么我对这个解决方案不满意,并且想知道是否有一个程序化的解决方案(当然)不诉诸循环并且不需要笨拙的双转置(甚至可能整齐地适合单个线)。