Я пытаюсь создать функцию, так как мне нужно применять один и тот же код несколько раз к разным столбцам в моих данных.
Мои данные (df) выглядят так:
WEEK1.x WEEK1.y WEEK2.x WEEK2.y WEEK3.x WEEK3.y
1 660.14 1 690.74 2 821.34 1
2 -482.89 99 -368.12 99 -368.12 99
3 284.48 3 399.90 1 375.32 1
4 -554.18 99 -300.28 99 -300.28 99
Тогда моя функция выглядит следующим образом:
extra<-function(first_var, second_var){
df$first_var=ifelse((df$first_var == 99),"99",
ifelse((df$first_var %in% c(1,2,3,4,5)),"1-5",NA))
output=as.data.frame(aggregate(second_var~first_var, data = df, mean))
return(output)
}
WEEK1<-extra("WEEK1.y", "WEEK1.x")
WEEK2<-extra("WEEK2.y", "WEEK2.y")
Это дает мне ошибку:
Ошибка в $<-.data.frame
(*tmp*
, first_var, значение = логическое (0)):
замена имеет 0 строк, данные имеют 1416
Когда я нажимаю просмотр трассировкивот что он говорит:
stop (sprintf (ngettext (N, "замена имеет% d строку, данные имеют% d", "замена имеет% d строки, данные имеют% d"), N, nrows), домен = NA) $<-.data.frame
(*tmp*
, first_var, значение = логическое (0)) $<-
(*tmp*
, first_var, значение = логическое (0)) дополнительно("WEEK1.y", "WEEK1.x")
Я не уверен, в чем проблема?