我想规范化名为" 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)。
答案 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