Пытаюсь переписать на R короткий скрипт из MATLAB, а с MATLAB я почти не работала. Почти всё перенеслось нормально, кроме одной строки, которая даёт другие числа.
A = [2 0; 1 3];
w = [0.5; 0.25];
s = A * w;
B = A .* A;
A <- matrix(c(2, 0, 1, 3), nrow = 2, byrow = TRUE)
w <- c(0.5, 0.25)
s <- A * w
B <- A * A
s
#> [,1] [,2]
#> [1,] 1.00 0.00
#> [2,] 0.25 0.75
B совпадает с MATLAB. s в MATLAB - два числа, 1 и 1.25, а в R получается целая матрица 2 на 2, без ошибки и без предупреждения. Я проверила, что A печатается одинаково в обоих, так что дело не в byrow. В R, похоже, нет .*, поэтому я просто везде убрала точку. Ошибка в этом или в том, как я собрала w?
Переведено с английского·Показать оригиналTrying to redo a short MATLAB script in R, and I've barely touched MATLAB before. Most of it came over fine, except for a single line that gives different numbers.
A = [2 0; 1 3];
w = [0.5; 0.25];
s = A * w;
B = A .* A;
A <- matrix(c(2, 0, 1, 3), nrow = 2, byrow = TRUE)
w <- c(0.5, 0.25)
s <- A * w
B <- A * A
s
#> [,1] [,2]
#> [1,] 1.00 0.00
#> [2,] 0.25 0.75
B agrees with MATLAB. s in MATLAB is two numbers, 1 and 1.25, and in R it's a whole 2 by 2 matrix with no error and no warning. I checked that A prints the same in both, so byrow isn't the problem. R didn't seem to have .*, so I just dropped the dot everywhere. Is that where it went wrong, or is it something about how I built w?