Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R svyby-您可以在';由';功能的一部分?_R_List_Loops_Survey - Fatal编程技术网

R svyby-您可以在';由';功能的一部分?

R svyby-您可以在';由';功能的一部分?,r,list,loops,survey,R,List,Loops,Survey,只是根据之前提出的问题寻求一些建议() 有没有一种方法可以遍历“by”语句和“variable”语句 谢谢你的帮助 试试这个 svybys<-function(formula, bys, design, FUN, ...){ tms <- attr(terms(bys),"variables")[-1] lapply(tms, function(tm){ eval(bquote(svyby(.(formula),

只是根据之前提出的问题寻求一些建议()

有没有一种方法可以遍历“by”语句和“variable”语句

谢谢你的帮助

试试这个

svybys<-function(formula,  bys,  design, FUN, ...){

    tms <- attr(terms(bys),"variables")[-1] 
    
    lapply(tms, function(tm){
         eval(bquote(svyby(.(formula),by=~.(tm), design=.(design), FUN=.(FUN), ...)))
    })
    
}   

这其中棘手的部分是,模型公式是一个单独的子语言,需要准旋转来替换东西。在这里,我使用了
bquote()
,但您也可以在tidyverse中使用感叹号和大括号等的组合——您需要通过
srvyr
包来实现这一点。

是否要传入两个参数而不是一个参数?也许定义一个输入为
y
z
的函数-您正在使用的函数只接受
z
…当您定义一个带有两个参数的函数时,您可以使用
mapply(functionname,var1,var2)
有什么方法可以告诉我它是什么样子的吗?我真的被这件事缠住了。感谢您提供的帮助。
mapply的变量
函数是第一个参数,
~y
需要一个与.formula类似的
as.formula(粘贴(
lapply( variables , function( z ) svyby( as.formula( paste0( "~" , z ) ) , by = ~gender + age + location,
                                         design = srs_design,
                                         FUN = svytotal, na.rm = TRUE,
                                         row.names = FALSE))
svybys<-function(formula,  bys,  design, FUN, ...){

    tms <- attr(terms(bys),"variables")[-1] 
    
    lapply(tms, function(tm){
         eval(bquote(svyby(.(formula),by=~.(tm), design=.(design), FUN=.(FUN), ...)))
    })
    
}   
> svybys(~api00+ell,~stype+sch.wide, dclus1, svymean)
[[1]]
  stype    api00      ell se.api00   se.ell
E     E 648.8681 29.69444 22.36241 1.411617
H     H 618.5714 15.00000 38.02025 5.347065
M     M 631.4400 22.68000 31.60947 2.952862

[[2]]
    sch.wide    api00    ell se.api00   se.ell
No        No 608.0435 23.000 28.98769 4.005597
Yes      Yes 649.3625 28.275 23.42657 1.966037