lapply()调用中的“未定义列选择”

时间:2016-06-27 17:01:24

标签: r subset lapply

  

[.data.frame中的错误(meuse @ data ,, x):选择了未定义的列

MWE:

library(automap)
data(meuse)
coordinates(meuse) = ~ x+y
lapply(1:1, function (x) {
    automap::autofitVariogram(meuse@data[, x] ~ 1, input_data = meuse)
})

meuse@data[,1]调用之外执行lapply可以正常工作并返回数字向量。

同样automap::autofitVariogram(meuse@data[, 1] ~ 1, input_data = meuse)运行正常。

因此我预计问题会由lapply调用引起。但是,使用我的另一个数据集(SpPointsDaFr)不会导致问题并且运行正常。

更仔细地查看错误消息,我不确定“meuse @ data”之后的第二个“逗号”是否始终存在于“子集”错误消息中?

修改:

另一种不起作用的方法:通过字符串寻址(请注意,我只使用[1:1]代替[1]进行进一步的功能使用)

cols <- names(meuse@data) [1:1]
> lapply(cols, function (x) {
+     automap::autofitVariogram(meuse@data[, x] ~ 1, input_data = meuse)
+ })

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。在调用laravel之前对meuse所需的值进行寻址/子集化,然后将对象autofitVariogram置于工作状态。

tmp

尝试在函数调用内部进行子集时的错误仍然可供讨论。