【问题标题】:R - Infinite or missing values in 'x'R - 'x' 中的无限或缺失值
【发布时间】:2015-01-27 09:27:09
【问题描述】:

尝试在 R 脚本中计算 100x2 矩阵的 SVD 时,我收到了 Error in svd(x, nu = 0L, nv = 0L) : infinite or missing values in 'x'。有趣的是,在 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))

【问题讨论】:

  • 你能在你的 svd 调用之前添加print(C[,1:i]),看看哪个输入产生了错误吗?
  • 这就是我发布的内容,print(C[,1:i])
  • 发布dput(C[,1:i])的输出。
  • 就是这样。抱歉耽搁了。我不得不scp工作文件。
  • dput的结果赋值给对象x。然后svd(x, nu = 0L, nv = 0L)svd(x[,1:2], nu = 0L, nv = 0L)Rscript 中完美运行并给出相同的结果。所以我会说,要么你在交互式 R 和 Rscript 中做的事情不同

标签: r svd


【解决方案1】:

与 OP 的错误信息有关,与 OP 的特定上下文无关。

svd(X, nu = 0L) 中的错误:“x”中的值无限或缺失

在计算 LDA 时发生..

如果解释的变量/组在提供的数据中只有一个值(无效数据)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多