一个简单的问题是:如何在我的 data.frame 中找到应用产生错误的位置?
详情如下:
我有一个 data.frame,其中包含在野外收集并存储在博物馆中的动物的地理数据(纬度/经度)。这些数据来自不同的来源(不同的博物馆和有其他博物馆列表的网站)。动物可能在一个或多个来源中列出,有时我们对同一动物有不同的坐标 - 由于四舍五入或错别字。我想要的是从每一行获取所有坐标 - 而不是 NA -,并计算最大值减去最小值,从而得到误差的大小。小错误可能会被忽略,否则我将不得不检查它们。
我正在使用以下代码:
#ALL is my data.frame with thousands of lines and about 100 columns
#ALL$LatDif will receive the differences in the coordinates for each row
#cLat <- c(18,21,46,54,63,77,85) # the columns with Latitudes from each museum
ALL$LatDif <- apply(ALL,1,function(x) if (any(!is.na(x[cLat]))) {max(x[cLat],na.rm=T)-min(x[cLat],na.rm=T)} else {NA})
它应该可以正常工作。但在某些方面它说:
Error in max(x[cLat], na.rm = T) - min(x[cLat], na.rm = T) :
non-numeric argument to binary operator
traceback() 给了我:
2: FUN(newX[, i], ...) at #1
1: apply(TUDO, 1, function(x) if (any(!is.na(x[cLat]))) {
max(x[cLat], na.rm = T) - min(x[cLat], na.rm = T)
} else {
NA
})
似乎中间的某个地方有字符,但我找不到在哪里。is.character() 没有帮助我。使用 for 需要很长时间。请问有什么帮助吗?提前致谢!