【问题标题】:"undefined columns selected" in lapply() calllapply() 调用中的“选择了未定义的列”
【发布时间】:2016-10-29 18:58:31
【问题描述】:

[.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)
})

lapplycall 之外执行meuse@data[,1] 工作正常并返回一个数字向量。

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)
+ })

【问题讨论】:

  • lapply(... meuse@data[[x]]~1 ... 可以工作吗?
  • 不,返回Error in .subset2(x, i, exact = exact) : no such index at Level 1

标签: r subset lapply


【解决方案1】:

我找到了解决方法。在调用autofitVariogram 之前寻址/子集meuse 的所需值,然后将对象tmp 放入工作中。

lapply(1:1, function (x) {
        tmp <- meuse@data[, x]
        emp.svgm <- automap::autofitVariogram(tmp ~ 1, meuse)
})

尝试在函数调用中进行子集化时的错误仍然有待讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2019-12-30
    • 2017-12-09
    • 2020-07-29
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多