R中的函数创建

时间:2018-06-11 22:02:22

标签: r function

如何在功能中转换它?

X是var,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 :(得分:1)

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)