Применить функцию с 3 параметрами к каждой строке столбца в кадре данных - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь применить функцию к каждой строке фрейма данных в R. Я уже прошел через несколько ответов в Переполнении стека, но они не работают.

В основном у меня есть фрейм данных широты и долготыИнформация.Функция convertLngs2 принимает 3 входа -> столбец информации о долготе из кадра данных, долготы источника и долготы назначения.Если разница между долготой источника и пункта назначения превышает 180 градусов, все отрицательные значения в столбце долготы необходимо увеличить на 360 градусов.

library(dplyr)
library(geosphere)

# Source
latWaterloo <- 43.46687 
lngWaterloo <- -80.52464

# Destination
latTaiwan <- 23.5983
lngTaiwan <- 120.8354


convertLngs2 <- function(lonn, srcLng, sonLng) {
  diffr <- abs(srcLng) + abs(sonLng)
  if (diffr > 180) {
    if (lonn<0) {
      lonn <- lonn + 360
    } else {
      lonn <- lonn
    } 
  } else {
    lonn <- lonn
  } 
}


geo_lines <- gcIntermediate(c(lngWaterloo, latWaterloo), c(lngTaiwan, latTaiwan), n=100, addStartEnd=T, sp=F)
geo_lines <- data.frame(geo_lines)

geo_lines2 <- geo_lines %>% mutate(lon=sapply(lon, convertLngs2(lon, lngWaterloo, lngTaiwan)))

geo_lines3 <- geo_lines %>% mutate(lon=convertLngs2(lon, lngWaterloo, lngTaiwan))

geo_lines4 <- geo_lines %>% mutate(lon=lapply(lon, convertLngs2(lon, lngWaterloo, lngTaiwan)))

geo_lines5 <- geo_lines %>% mutate(lon=apply(lon, 1, convertLngs2(lon, lngWaterloo, lngTaiwan)))

Мне нужно сохранить параметры srcLng и sonLng в функции.Я пробовал sapply, lapply и apply, но все они выдают следующую ошибку:

Error in mutate_impl(.data, dots) : 
  Evaluation error: 'convertLngs2(lon, lngWaterloo, lngTaiwan)' is not a function, character or symbol.
In addition: Warning message:
In if (lonn < 0) { :
  the condition has length > 1 and only the first element will be used

Какие изменения необходимы для работы кода?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...