R - 矩阵的归一化数据 - 双循环
R - Normalising data of a matrix - Double for loop
我想规范化名为 "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)。
您可以在 数字列上使用带有匿名函数的 sapply()
:
num_cols <- sapply(df, is.numeric) # Find numeric columns
df[,num_cols] <- sapply(df[,num_cols], function(x) x-mean(x)) # Apply function
我想规范化名为 "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)。
您可以在 数字列上使用带有匿名函数的 sapply()
:
num_cols <- sapply(df, is.numeric) # Find numeric columns
df[,num_cols] <- sapply(df[,num_cols], function(x) x-mean(x)) # Apply function