Я получаю Error in svd(x, nu = 0L, nv = 0L) : infinite or missing values in 'x'
при попытке вычислить SVD для матрицы 100x2 в скрипте R. Что забавно, так это то, что выполнение того же самого для той же самой матрицы в командной строке R работает отлично.
Это данные:
[,1] [,2]
[1,] 5840 5
[2,] 5840 6
[3,] 14600 2
[4,] 5840 5
[5,] 5840 4
[6,] 5840 5
[7,] 14600 5
[8,] 14600 8
[9,] 5840 5
[10,] 262144 11
[11,] 66240 5
[12,] 16560 14
[13,] 5840 5
[14,] 5840 17
[15,] 16560 6
[16,] 5840 7
[17,] 66240 5
[18,] 5840 7
[19,] 33003 7
[20,] 65535 7
[21,] 5840 6
[22,] 65535 7
[23,] 65535 4
[24,] 16560 4
[25,] 5840 4
[26,] 14600 9
[27,] 65535 6
[28,] 14600 8
[29,] 8192 8
[30,] 14600 5
[31,] 14600 5
[32,] 131072 8
[33,] 14600 10
[34,] 14600 5
[35,] 14600 5
[36,] 14600 5
[37,] 14600 5
[38,] 14600 8
[39,] 8192 9
[40,] 8192 16
[41,] 65535 5
[42,] 14600 5
[43,] 6432 5
[44,] 14600 5
[45,] 5840 5
[46,] 14600 5
[47,] 8192 7
[48,] 254992 5
[49,] 14600 6
[50,] 5840 7
[51,] 14600 5
[52,] 5840 6
[53,] 16560 7
[54,] 64860 6
[55,] 14600 5
[56,] 14600 5
[57,] 14600 5
[58,] 14600 5
[59,] 14600 5
[60,] 14600 5
[61,] 5840 5
[62,] 65535 4
[63,] 14600 5
[64,] 14600 5
[65,] 14600 8
[66,] 131328 5
[67,] 5840 5
[68,] 14600 5
[69,] 14600 5
[70,] 14600 5
[71,] 14600 5
[72,] 14600 5
[73,] 14600 5
[74,] 5840 19
[75,] 14600 5
[76,] 5840 5
[77,] 14600 5
[78,] 14600 5
[79,] 14600 5
[80,] 14600 5
[81,] 14600 5
[82,] 14600 5
[83,] 5840 7
[84,] 14600 5
[85,] 66048 21
[86,] 65535 159
[87,] 6432 6
[88,] 14600 5
[89,] 65535 5
[90,] 8192 10
[91,] 5840 5
[92,] 14600 5
[93,] 14600 5
[94,] 66048 8
[95,] 14600 5
[96,] 16560 5
[97,] 14600 5
[98,] 42900 6
[99,] 8192 7
[100,] 8192 7
Я использую подмножество столбцов, поэтому фактический вызов, который я делаю, — это svd(C[,1:i])
, где C
— это матрица, которую я использую, а i
равняется 2, когда происходит сбой.
Я уверен, что матрицы в скрипте и в подсказке одинаковые (я распечатал их в разные файлы и разобрал, чтобы убедиться!)
Итак, в чем здесь может быть проблема?
ИЗМЕНИТЬ
dput(C[,1:i])
structure(c(5840, 5840, 14600, 5840, 5840, 5840, 14600, 14600,
5840, 262144, 66240, 16560, 5840, 5840, 16560, 5840, 66240, 5840,
33003, 65535, 5840, 65535, 65535, 16560, 5840, 14600, 65535,
14600, 8192, 14600, 14600, 131072, 14600, 14600, 14600, 14600,
14600, 14600, 8192, 8192, 65535, 14600, 6432, 14600, 5840, 14600,
8192, 254992, 14600, 5840, 14600, 5840, 16560, 64860, 14600,
14600, 14600, 14600, 14600, 14600, 5840, 65535, 14600, 14600,
14600, 131328, 5840, 14600, 14600, 14600, 14600, 14600, 14600,
5840, 14600, 5840, 14600, 14600, 14600, 14600, 14600, 14600,
5840, 14600, 66048, 65535, 6432, 14600, 65535, 8192, 5840, 14600,
14600, 66048, 14600, 16560, 14600, 42900, 8192, 8192, 5, 6, 2,
5, 4, 5, 5, 8, 5, 11, 5, 14, 5, 17, 6, 7, 5, 7, 7, 7, 6, 7, 4,
4, 4, 9, 6, 8, 8, 5, 5, 8, 10, 5, 5, 5, 5, 8, 9, 16, 5, 5, 5,
5, 5, 5, 7, 5, 6, 7, 5, 6, 7, 6, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5,
8, 5, 5, 5, 5, 5, 5, 5, 5, 19, 5, 5, 5, 5, 5, 5, 5, 5, 7, 5,
21, 159, 6, 5, 5, 10, 5, 5, 5, 8, 5, 5, 5, 6, 7, 7), .Dim = c(100L,
2L))
print(C[,1:i])
перед вызовом svd, чтобы увидеть, какой ввод дает ошибку? - person agstudy   schedule 28.11.2014print(C[,1:i])
. - person cangrejo   schedule 28.11.2014dput(C[,1:i])
. - person Roland   schedule 28.11.2014scp
файлы с работы. - person cangrejo   schedule 28.11.2014dput
объектуx
. Тогда иsvd(x, nu = 0L, nv = 0L)
, иsvd(x[,1:2], nu = 0L, nv = 0L)
прекрасно работают вRscript
и дают идентичные результаты. Поэтому я бы сказал, что либо вы делаете разные вещи в интерактивном R и в Rscript. - person Bhas   schedule 28.11.2014