如何在功能中转换它?
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)
}
但没有任何反应,也没有显示错误
答案 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)