我有一个带有数字纬度和经度值的数据框。 data.frame具有14K行和40列。

我想在数据框中添加一个名为“半球”的类别列,以便轻松地区分北部(纬度> 0)和南部位置(纬度

for (r in 1:nrow(myDataFrame)) {
  if (myDataFrame[r, "latitude"] > 0) {
    myDataFrame[r, "hemisphere"] <- "North"
  } else {
    myDataFrame[r, "hemisphere"] <- "South"
  }
}


在我的MacBook Pro上运行此代码块大约需要一分钟,甚至两分钟,比我预期的要长得多。似乎有些东西使它效率很低,应该有更好的方法。有什么提示吗?

最佳答案

@baptiste的ifelse解决方案是加快与矢量化比较的一般习惯用法,但是在这种情况下,一些明智的子集和sign的使用可能会更快:

myDataFrame$hemisphere <- c("South","Equator","North")[sign(myDataFrame$latitude)+2]

08-27 18:46