如果矩阵的语句对角线

时间:2012-10-18 22:20:43

标签: r

我试图将-5放在矩阵的对角线上。我正在使用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)
}

1 个答案:

答案 0 :(得分:3)

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

约书亚并没有像他们所说的那样成为一个混蛋 - 很明显你是R的新手,因为很多你所写的东西都不起作用。

if语句中的条件必须长度为1,看起来好像你希望在整个矩阵中输入。有一个矢量化版本的if和ifelse,但它不会像你想要的那样对你的矩阵起作用。

cat打印到控制台,但它不会替换矩阵中的元素。你需要做一些替换才能真正实现这一目标。

尝试手动识别哪些元素对角线是唯一的以进行替换可能也不是最好的主意。有更好的方法 - 其中一些可以在Joshua链接到的介绍手册中找到。祝你好运。