settings_LOS = c(AUNMPSY2, AUNMPGE2, AUNMMED2, AUNMAHS2, AUNMRES2, AUNMSFA2)
for (setting in settings_LOS){
temp = subset(ltm_hospitalized, setting %in% c(1:31))
svymean(~setting, temp)
}
运行此操作时为什么会出现此错误?
Error in match(x, table, nomatch = 0L) :
'match' requires vector arguments
我也在向量中使用字符串
settings_LOS = c('AUNMPSY2', 'AUNMPGE2', 'AUNMMED2', 'AUNMAHS2', 'AUNMRES2', 'AUNMSFA2')
给了我这个错误
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
当我尝试没有循环时,它可以正常工作,例如:
temp = subset(ltm_hospitalized, AUNMPSY2 %in% c(1:31))
svymean(~AUNMPSY2, temp)
mean SE
AUNMPSY2 8.4779 1.3647
出了什么问题?
答案 0 :(得分:0)
settings_LOS = c('AUNMPSY2', 'AUNMPGE2', 'AUNMMED2', 'AUNMAHS2', 'AUNMRES2', 'AUNMSFA2')
for (setting in settings_LOS){
temp = subset(ltm_hospitalized, eval(parse(text=setting)) %in% c(1:31))
print(setting)
print(svymean(~eval(parse(text=setting)), temp))
print(svyquantile(~eval(parse(text=setting)), temp, seq(.10, .90, by=.10)))
}
原来我必须把它包装在eval(parse(text =))
中