Мне не хватает хорошего понимания функции apply
, которая, возможно, приводит к появлению сообщения об ошибке при циклическом цикле по фрейму данных , где один столбец является символом .
Я использую apply
путем передачи строк кадра данных в мою пользовательскую функцию (UDF).
Все работает хорошо, когда все столбцы кадра данных numeric
.
Когда я изменяю один изот столбцов к символу, тогда моя UDF все еще работает, если я пропускаю строки данных по одному.
Однако , как только я использую apply
, тогда я получаю эту ошибку:
нечисловой аргумент бинарного оператора
Вот пример кода, который иллюстрирует проблему:
Определение UDF:
UDF <- function(x){return(x[1] + x[2])}
Определите фрейм данных:
x <- data.frame(col1 = c(1,2), col2 = c(3,4), col3 = c(5,6))
x
col1 col2 col3
1 3 5
2 4 6
Теперь, если я использую apply, он работает:
apply(x,1,FUN = UDF)
[1] 4 6
Если я изменяю col3 (обратите внимание, что col3 не используется в UDF)чтобы быть character
через x$col3 <- as.character(x$col3)
, и я передаю одну строку в UDF, он все еще работает:
UDF(x[1,])
col1
1 4
Но если я использую apply
на этомс кадром данных, то он ломается и выдает ошибку, говоря, что он не может плюс x[1]
и x[2]
:
apply(x,1,FUN = UDF)
Ошибка в x [1] + x [2]: нечисловой аргумент бинарного оператора
Что мне не хватает?
Спасибо