我不是这些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
- 它们长度相同,所以这里有什么问题?
最佳, 玛蒂尔德
答案 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参数。