Хотя у GKi есть лучший ответ, который более прост и который вы должны использовать здесь, я изменил ваш код, чтобы он работал.
Как правило, при создании функции вы хотите, чтобы вход был в качестве фрейма данных, в данном случае text
и при изменении функции оттуда. сначала создайте вектор значений, а затем присоедините указанный вектор к фрейму данных, как я делаю в приведенном ниже коде, но для этого нужно убедиться, что вы создали пустой векторный объект. На самом деле R не позволяет медленно добавлять данные ячеек в фрейм данных, он предпочитает, чтобы к нему присоединялся вектор (который может быть добавлен) равной длины.
Также вам не нужно использовать print()
для вставки символа в вектор.
Надеюсь, это поможет объяснить, почему у вашей функции были проблемы, но, честно говоря, ответ GKi лучше для общего использования R!
mean_score <- function(x) {
mean_score <- vector()
for (i in 1:nrow(x)){
if (sum(x[i,] != "NA", na.rm = TRUE) >3){
mean_score[i] <- rowMeans(x[i,], na.rm = TRUE)
} else
mean_score[i] <- "N"
}
x$mean_score <- mean_score
return(x)
}
mean_score(test)