0

行列の対角線に -5 を入れようとしています。if文を使用しています。しかし、私のifステートメントは間違っています。誰か助けてくれませんか?

X= rbind(c(1.2,3.4,10.3),c(2,8,78),c(45,-36,8))
array(X,dim=c(3,3))
if (X != (1.2,8.0)){
    cat(X)
} else {
    cat(-5)
}
4

1 に答える 1

3
X <- rbind(c(1.2, 3.4, 10.3), c(2, 8, 78), c(45, -36, 8))
diag(X) <- -5

Joshua は、彼らが言ったようにバカになろうとしていたわけではありません。あなたが書いたものの多くがうまくいかないので、あなたが R に慣れていないことは明らかです。

if ステートメント内の条件は長さ 1 である必要があり、マトリックス全体をフィードすることを望んでいるように見えます。if のベクトル化されたバージョンがありますが、ifelseそれは行列に対して望むようには機能しません。

catコンソールに出力されますが、マトリックス内の要素は置き換えられません。実際にそれを達成するには、何らかの交換を行う必要があります。

また、対角線に固有の要素を手動で特定して置換を行うことも、おそらく最善の方法ではありません。より良い方法があります - それらのいくつかは Joshua がリンクしているイントロ マニュアルに記載されています。幸運を。

于 2012-10-18T22:25:54.393 に答える