Я столкнулся с проблемой при программировании функции для вычисления средневзвешенного значения и стандартного отклонения (сообщение об ошибке: «Ошибка в summarise_impl (.data, dots): Ошибка оценки: не числовой аргумент для двоичного оператора»).
Для воспроизводимых данных,
set.seed(1)
sample<-as.data.frame(cbind(treat, weight))
treat<-c(rep(0, 10), rep(1, 10))
weight<-runif(20)
for (i in 1:nrow(sample)){
sample$Y1[i]<-sample$treat[i] + rnorm(1, mean = 0, sd = 1)
sample$Y2[i]<- -sample$treat[i] + rnorm(1, mean = 0, sd = 1)
}
sample[3, "Y1"]<-NA
sample[5, "weight"]<-NA
sample[1, "weight"]<1000
И код функции, с которой я работаю, выглядит следующим образом.
func<-function(data.name, varlist, cond.var, relation, comp.value, gen.var){
varlist.de<-unlist(strsplit(varlist, "[+]"))
### This is where I ecnountered the problem
for (i in 1:nrow(data.name)){
for (j in 1:(length(varlist.de)-2)){
df_weighted<-
data.name %>%
summarise(weighted_mean = wt.mean(varlist.de[j+2], varlist.de[j+1]),
weighted_sd = wt.sd(varlist.de[j+2], varlist.de[j+1]))
}
}
return(data.name)
}
## I ran this code, then the error occured.
func(data.name=sample,
varlist="treat+weight+Y1+Y2",
cond.var="weight",
relation = "!=",
comp.value = "NA",
My_New_Index1)
В частности, "df_weighted <-data.name%>% group_by (TT)%>% суммировать (weighted_mean = wt.mean (varlist.de [j + 2], varlist.de [j + 1]), weighted_sd = wt.sd (varlist.de [j + 2], varlist.de [j + 1])) ", похоже, выдает сообщение об ошибке" Ошибка в summarise_impl (.data, dots): Ошибка оценки: не числовой аргумент к бинарному оператору ".
Любое предложение по исправлению ошибки будет оценено. Спасибо.