Как изменить аспекты фрейма данных в глобальной среде с помощью функции? - PullRequest
0 голосов
/ 05 февраля 2020

Хорошо, поэтому я импортирую данные из большой базы данных опроса в R, и он преобразовал категориальные переменные с метками в целочисленные векторы, как это происходит .....

Однако я бы хотел преобразовать их обратно в факторы и переназначить метки, поэтому я использовал следующее:

w2$b_scdem2many <- factor(w2$b_scdem2many,
                          levels = c(-9,-8,-7,-2,-1,1:6),
                          labels = c("missing", "inapplicable", "proxy", "refusal", "dont know",
                                     "strongly agree", "moderately agree", "slightly agree",
                                      "slightly disagree","moderately disagree", "strongly disagree"))

Это сработало просто отлично, но с более чем 4000 переменных я не хочу набирать это так много раз.

Я думал использовать функцию apply, но она требует, чтобы это была функция, поэтому я попытался:

fac_sc <- function(x){
  result <- factor(x, levels = c(-9,-8,-7,-2,-1,1:6),
              labels = c("missing", "inapplicable", "proxy", "refusal", "dont know",
                         "strongly agree", "moderately agree", "slightly agree",
                         "slightly disagree", "moderately disagree", "strongly disagree"))
 return(x)
  return (result)
  assign(x, result, envir = .GlobalEnv)
}
fac_sc(w2$b_scdem2many)

return (x) вывести w2 $ b_scdem2many, что ожидалось, учитывая, что w2 Переменная $ b_scdem2many была представлена ​​в качестве аргумента x для функции.

return (result) напечатал соответствующие метки для каждого из значений для x, так что это ожидание, которое я хотел и хотел назначить моему данному x ( w2 $ b_scdem2many в данном случае)

Однако при назначении x, кажется, больше не принимает w2 $ b_scdem2many в качестве x, но вместо этого, похоже, предполагает, что я задаю новый x (т.е. он ищет переменную с именем x в окружении, а не ищет переменную, указанную в функции как x (w2 $ b_scdem2many).

Как обычно, я, скорее всего, упускаю что-то простое , Любая помощь будет очень высоко ценится.

Я попытался заглянуть в << - вместо присвоения, так как думал, что присвоение может воспринимать x буквально, а не как внутреннюю переменную в среде функций, но все же я получил то же самое (новый x объект, содержащий нужные метки). </p>

Кто-нибудь знает, как редактировать кадры данных с помощью функции, пожалуйста?

...