使用mapply时忽略NA

时间:2016-10-14 05:51:43

标签: r na mapply na.rm

我有以下数据集:

longitude   latitude
NA  NA
NA  NA
NA  NA
NA  NA
-73.77384042    40.64582098
NA  NA
NA  NA
NA  NA
NA  NA
NA  NA

我使用以下代码转换lat&很长时间使用以下代码获取位置:

tweets1.df$textAddress <- mapply(FUN = function(lon, lat) revgeocode(c(lon, lat)), tweets1.df$longitude, tweets1.df$latitude)

但是我收到以下错误:Error: is.numeric(location) && length(location) == 2 is not TRUE

请让我知道我哪里出错。

1 个答案:

答案 0 :(得分:0)

这应该有效:

options(digits=16)
indices <- which(complete.cases(tweets1.df[,1:2]))
tweets1.df$textAddress <- NA
tweets1.df[indices,]$textAddress <- mapply(FUN = function(lon, lat) 
                    revgeocode(c(lon, lat)), 
                    tweets1.df[indices,]$longitude, 
                    tweets1.df[indices,]$latitude)

tweets1.df


longitude    latitude                        textAddress
1            NA          NA                               <NA>
2            NA          NA                               <NA>
3            NA          NA                               <NA>
4            NA          NA                               <NA>
5  -73.77384042 40.64582098 Terminal 5, Jamaica, NY 11430, USA
6            NA          NA                               <NA>
7            NA          NA                               <NA>
8            NA          NA                               <NA>
9            NA          NA                               <NA>
10           NA          NA                               <NA>

您也可以尝试这一点,对评论中建议的内容进行一些修改:

tweets1.df$textAddress <- apply(tweets1.df, 1, function(x){print(x);ifelse(any(is.na(x)), NA, revgeocode(x))})