我有以下数据框'A'。我从它计算一个距离矩阵B。然后我将距离矩阵'B'添加到列表'C'中并查看它。
A <- data.frame(x = c(1:10),
y = c(21:30))
B <- dist(A)
C <- list(B)
View(C)
到目前为止一切顺利。没有问题,一切都好。但是一旦我加载了"DescTools"或";e1071"并执行完全相同的操作,我得到一个错误。
library("e1071")
A <- data.frame(x = c(1:10),
y = c(21:30))
B <- dist(A)
C <- list(B)
View(C)
.Primitive误差("[")(x, 1:6,放弃= FALSE):尺寸数不正确
然而,当我直接调用列表时,或者列表中的距离矩阵,我仍然得到一个没有错误的返回:
C[[1]]
1 2 3 4 5 6 7 8 9
2 1.414214
3 2.828427 1.414214
4 4.242641 2.828427 1.414214
5 5.656854 4.242641 2.828427 1.414214
6 7.071068 5.656854 4.242641 2.828427 1.414214
7 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
8 9.899495 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
9 11.313708 9.899495 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
10 12.727922 11.313708 9.899495 8.485281 7.071068 5.656854 4.242641 2.828427 1.414214
同样让我困惑的是,即使我用detach()卸载包,错误仍然存在。
library("DescTools")
detach("package:DescTools", unload=TRUE)
A <- data.frame(x = c(1:10),
y = c(21:30))
B <- dist(A)
C <- list(B)
View(C)
一旦我重新启动会话,并且不加载任何一个包,它就会再次工作。
我测试了我使用的所有其他软件包。没有任何原因导致这种行为。我加载了" e1071 "包原要利用其峰度和偏度函数。当我追踪这个错误到这个特定的软件包时,我最终下载了"desctools";包,以避免错误,因为它提供相同的功能。但是,它会导致相同的问题。
是否有一些修复这个?我是不是太蠢了,我错过了什么明显的东西?我不是程序员/编码员/脚本员,但通常我可以从这里拼凑出我需要的东西。我发现没有任何东西可以帮助我解决这个问题,当我试图快速检查我的列表时,这个错误开始变得令人沮丧。提前谢谢。
我不确定这是不是一个答案,因为我不能解决你的问题,但我想我可以解释它。
如果您使用utils::View(C)
而不是View(C)
,我就会遇到相同的错误,无论加载的包是。根据这个评论,RStudio提供了自己的查看器,它可以显示列表和其他东西,并推翻View
,除非通过命名空间utils::View
调用。当你在RStudio之外的R语言中运行代码时,你也会得到这个版本的函数。
显然,加载DescTools或e1071包也强制使用原始的View函数,因为两者都导入utils
包(通常在R中默认已经加载)。