scatter3D中的colvar返回错误“clim [2] - clim [1]:二元运算符的非数字参数”

时间:2017-01-27 09:50:53

标签: scatter3d

再次亲爱的论坛,你好,

我不是这些3D情节中最好的朋友,我很难用简单的格式化东西。就像现在一样,我无法从变量中为我的情节着色。

with(samples3d, {
  s3d <- scatter3D(MDS2, MDS3, MDS1, pch = ifelse(meta$op.closed=="cl",22,21), type = "h",colvar = pcolor, lty.hplot=2, scale.y=0.75)
 } )

它给了我这个错误:

Error in clim[2] - clim[1] : non-numeric argument to binary operator

我可以从文档中读到:

  

“colvar:用于着色的变量....如果   指定的,它应该是一个长度相等的向量(x,y,z)。“

所以我用天真的方法检查了

colvec <- as.vector(samples3d$pcolor)
MDS1vec <- as.vector(samples3d$MDS1)
length(MDS1vec)
43
length(colvec)
43

- 它们长度相同,所以这里有什么问题?

最佳, 玛蒂尔德

2 个答案:

答案 0 :(得分:0)

在不知道向量中的数据类型的情况下,我会从错误消息中假设您的pcolor向量是非数字的。

此处给出了此错误消息的详细答案: Non-numeric Argument to Binary Operator Error in R

解决方案可能是使用数值对pcolor中的组进行编码。当我遇到这个问题时,至少那对我有用。

答案 1 :(得分:0)

我也发现着色方案有点困难。但是colvar应该是一个数字向量,1,2,3,4到你拥有的组数。然后你必须提供col作为另一个向量 - 长度组的数量。然后,Scatter3D将在另一个向量中查找您的每个数字,作为参数&#39; col&#39;提供。 E.g:

colvar <- as.numeric(as.factor(pcolor))

现在你的所有颜色都是数字。然后:

col <-levels(as.factor(pcolor))

这是函数可以获取颜色的col参数。