R - 归一化矩阵数据 - 双循环

时间:2017-03-21 17:52:14

标签: r loops double normalization

我想规范化名为" VI9A_mining"的数据框中的数据。 我的数据框的每一列代表一个元素;每一行代表给定元素的浓度。 对于给定元素的每个浓度,我想计算该元素的平均浓度。 如果我有:

Ca Zr K                     Ca  Zr  K
2  14 4  ==> i would like : -3  4   1
8  10 5                      3  0   2
5  6  0                      0  -4  -3

以下是我的尝试:

VI9A_mn=matrix(nrow=21,ncol=length(nom_mining)) #VI9A_mn is the output matrix
for (j in nom_mining){   #nom_mining is a vector with all the names of the columns of VI9A_mining
  for (i in VI9A_mining){
    VI9A_mn(i,j)=VI9A_mining(i,j)-mean(VI9A_mining(j))
  }
}

所以我想要一个循环,它可以在每一列(j)中运行所有行(i)。

1 个答案:

答案 0 :(得分:1)

您可以在数字列上使用sapply()匿名函数:

num_cols <- sapply(df, is.numeric) # Find numeric columns
df[,num_cols] <- sapply(df[,num_cols], function(x) x-mean(x)) # Apply function