2017-04-12 3 views
0

forループを作成しようとしています。ある行列のセルが文字に一致すると、一致した行全体が空白の行列になります。私はそれが行列Aの行を埋めるために働く、単一の番号を持つif文で私を交換する場合はここしかし、それは1行、より多くを満たしていないだろう、私のコードMatrixを満たすステートメントの場合、不適切な添字の数

mets<-data.frame(read.csv(file="Metabolite_data.csv",header=TRUE)) 

full<-length(mets[,6]) 
A=matrix(,nrow=4930,ncol=8, byrow=T) 

for (i in 1:full){ 

    if (mets[i,6]=="A") (A[i,]=(mets[i,])) 

} 

です。 TIA

+1

サンプルデータと予想される出力を提供します。両方のデータフレームに同じディムがありますか? – user5249203

答えて

0

ncol=dim(mets)[2]を指定して、マトリクスを埋めるために同じ数の入力を提供したい場合があります。

1

データフレームからマトリックスに問題が発生している可能性があります。データフレームの代わりに行列として "mets"を使うだけで問題を解決できるか、forループ内にas.matrixを使うことができます。私はあなたの "metabolite_data.csv"を持っていないので、作成データを持つ後者の例:

mets <- matrix(sample(LETTERS[1:4], 80, replace = TRUE), nrow = 10, ncol = 8) 
mets <- as.data.frame(mets) 

A <- matrix(nrow = nrow(mets), ncol = ncol(mets), byrow = TRUE) 

for(i in 1:nrow(mets)){ 
    if(mets[i,6] == "A"){ 
    A[i,] = as.matrix(mets[i,]) 
    } 
} 

print(A) 
+0

チャームのように働いてくれてありがとう – ljohnson

関連する問題