2017-03-21 10 views
0

"VI9A_mining"というデータフレームにあるデータを正規化したいと思います。 私のデータフレームの各列は要素を表します。各線は、与えられた要素の濃度を表す。 与えられた要素の各濃度について、その要素の平均濃度を取り消したいと思います。私が持っている場合 だから:ここR - 行列のデータを正規化する - Double for loop

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

あなたの数値列に匿名関数でsapply()を使用することができます。

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

おかげで私は、私はその操作を適用したくないもので、私のデータフレーム内の非数値列を持っています。サプリーがここで働くことができれば私はshureではないのですか? –

+0

@ jo.H更新を参照してください – mtoto

+0

素晴らしい作品!ありがとう! –