2017-02-25 7 views
1

データフレームを検討正方行列の作成:(dat[j,1]==x[i]& dat[j,2]==1)場合要素1である条件と0との別段

set.seed(1234) 
n = 10 
dat <- data.frame(x=runif(n,0,200), d=rbinom(n,1,.5)) 

は、今は、クレートに素子a[i,j]=1 n次元によってnの行列aしたい、およびそうでなければ0。

a <- matrix(,ncol=n, nrow=n) 

for(i in 1:n){ 
    a[i,] <- (dat$x==dat$x[i] & dat$d==1) 
} 

しかしouter()または類似の他の機能とのa変数を作成する方法があります:

次のコードは正常に動作しますか?

答えて

4

を行列の対角に変換するには、diag()を使用できます。論理条件"==1"を追加して、バイナリ行列をブール値に変換します。ここで

diag(dat$d)==1 
1

は別のベクトル化オプション

a <- matrix(FALSE,ncol=n, nrow=n) 
a[row(a)==col(a)] <- dat$d==1 
ある
関連する問題