簡體   English   中英

r中函數中的動態變量名和多個條件

[英]dynamic variable name and multiple condition in function in r

我想創建一個具有動態變量( var1, var2, var3 and var4 )和動態條件的函數。 這是示例函數

dta = data.frame(var1 = c(1:8),
                 var2 = c(rep("AA",4),rep("BB",4)),
                 var3 = rep(c("C","D"),4),
                 var4 = c(1,1,0,0,0,0,1,1))

mean(dta$var1[dta$var2 == "AA" & dta$var3 == "C" & dta$var4 == 1] 
            - dta$var1[dta$var2 == "AA" & dta$var3 == "C" & dta$var4 == 0],na.rm = T)

如果我想創建這樣的函數

sample_fun = function(dta,var1 = "var1",var2 == "var2,var2_cond = "AA",var3_cond = "C",var4_cond = 1){
  mean(dta$var1[dta$var2 == var2_cond & dta$var3 == var3_cond & dta$var4 == 1] 
       - dta$var1[dta$var2 == var2_cond & dta$var3 == var3_cond & dta$var4 == 0],na.rm = T)
  
}

我該怎么做? 使用dplyr對我來說也很好。

我特別關心的是var1的動態。 應該如何將所有動態變量( var1, var2, var3var4 )放在一起?

我們可以使用[[將列提取為向量。 我也使用with來避免每次都寫入data$

sample_fun = function(dta, var = 'var1', var2_var = "var2", var2_cond = "AA", var3_cond = "C"){
  
  with(dta, mean(dta[[var]][dta[[var2_var]] == var2_cond & 
                  var3 == var3_cond & var4 == 1] - 
                  dta[[var]][dta[[var2_var]] == var2_cond & var3 == var3_cond & 
                  var4 == 0],na.rm = TRUE))
}

sample_fun(dta)
#[1] -2

sample_fun(dta, 'var4',var2_var = "var2", var2_cond = 'BB', var3_cond = 'D')
#[1] 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM