Я использую оператор ifelse для создания нового столбца в моем фрейме данных.
Внутри этого оператора ifelse мне нужно вызвать функцию для результатов, которые проходят начальный тест.
Например:
test_function=function(value){
print(value)
return(value)}
testdf<-data.frame(a=c(1,1,2,2,3,3),b=c(1,2,3,4,5,6))
testdf$c<-ifelse(testdf$a==2,test_function(testdf$b),NA)
Этот пример дает ответ, который я хотел бы ожидаем (testdf $ c = NA, NA, 3,4, NA, NA), однако оператор print показывает, что по пути весь столбец a передается в test_function ().
В моих реальных данных это приводит к сбою (извините, я действительно изо всех сил стараюсь привести воспроизводимый пример).
Есть ли способ изменить это так, чтобы только те строки, которые проходят первоначальный тест, передавались в функцию, а не все строки с решением, казалось бы, принято после.
Я знаю, что могу добиться того же с помощью функции применения или al oop, но мой фактический фрейм данных имеет длину 1,5 м, и я считаю, что они непомерно трудоемки.
Заранее спасибо за помощь!