[英]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, var3
和var4
)放在一起?
我們可以使用[[
將列提取為向量。 我也使用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.