Создание функции в R - PullRequest
       4

Создание функции в R

0 голосов
/ 12 июня 2018

Как мне включить это в функцию?

X - это переменная, а Z - это разные наборы данных

X<-as.factor(X)
niveis<-levels(X)
teste<-table(X)

for(i in 1:length(niveis)) {
Z$weight[X == niveis[i]] <- teste[niveis[i]]
                       }

Z$weight<-as.numeric(Z$weight)

Я пытался:

weight_function<-function(Z, X) {

  X<-as.factor(X)
  niveis<-levels(X)
  teste<-table(X)

for(i in 1:length(niveis)) {
  Z$weight[X == niveis[i]] <- teste[niveis[i]]
                           }
  Z$weight<-as.numeric(Z$weight)

}

но ничего не происходит и не отображается ошибка

1 Ответ

0 голосов
/ 12 июня 2018

R функции (обычно) не работают из-за побочных эффектов.Ваша функция ничего не возвращает.Он мутирует свою локальную копию Z, но затем отбрасывает изменения.Вместо этого возвращает мутированную копию:

weight_function<-function(Z, X) {

  X<-as.factor(X)
  niveis<-levels(X)
  teste<-table(X)

  for(i in 1:length(niveis)) {
    Z$weight[X == niveis[i]] <- teste[niveis[i]]
  }
  Z$weight<-as.numeric(Z$weight)
  Z
}

Затем назовите ее как Z <- weight_function(Z, X)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...