如何解决错误因素在R中有不良水平

时间:2020-04-09 06:22:53

标签: r spatstat

R中,将非均匀G函数应用于我的点模式有些困难。 为了使用GmultiInhom,我首先尝试将点模式bci.tree8pppa转换为多类型模式:

bci.tree8multi = ppp(bci.tree8pppa$x, bci.tree8pppa$y, window=owin(c(0,1000), c(0,500)), marks = factor(bci.tree8pppa$marks[,3]))

然后按如下方式应用G功能:

G = GmultiInhom(bci.tree8multi, marks(bci.tree8multi) == species1, marks(bci.tree8multi) == species2, lambdaI = lambda1points, lambdaJ = lambda2points, lambdamin = min(lambda2points), r = c(0,r1,r2,r3))

但这会产生错误:"Error in split.default(X, group) : factor has bad level"

我该如何解决? 预先谢谢你!

1 个答案:

答案 0 :(得分:0)

为了那里的所有R程序员的利益:我在基本"factor has bad level"系统中将错误消息.Internal(split.default(x,f))跟踪到R的C源代码。仅当flist而不是factor时,才会出现此错误消息。该代码使用执行字符串操作的函数finteraction转换为因子。从结果因子具有“不良水平”的意义上讲,这种转换可能会出错:因子的整数表示包含小于1或大于因子水平数目的值。然后发生错误。

原始帖子未提供有效的示例,因此很难准确地找出spatstat::GmultiInhom中的代码是如何导致错误类型的数据被馈送到split.default的。但是,它必须与参数r的滥用有关。 spatstat中的代码将被收紧以对r的格式实施更严格的要求。