1
我做了一個使用dplyr的函數。我可以使用get()
爲select_()
選擇參數,但不適用於mutate()
。dplyr:在select_()和mutate()中使用環境變量
這是我使用的代碼。
創建測試數據:
test <- tibble(Q1=c(NA,NA,NA,4,5),
Q2=c(1,2,NA,NA,NA),
Q3=c(NA,NA,3,NA,NA),
Group=c("B", "B", "C", "A", "A"))
這將返回錯誤。
## Create y column
create_y <- function(x1, x2, x3, Group){
length <- length(x1)
res <- c()
for (i in 1:length){
if(Group[i]=="A")
res <- c(res, x1[i])
if(Group[i]=="B")
res <- c(res, x2[i])
if(Group[i]=="C")
res <- c(res, x3[i])
}
return(res)
}
reg_figure <- function(var1, var2, var3){
test %>% select_(.dots=c(get("var1"), get("var2"), get("var3"), "Group")) %>%
mutate(y=create_y(as.name(get("var1")), as.name(get("var2")), as.name(get("var3")), Group))
}
reg_figure("Q1", "Q2", "Q3") # error
我想這樣的結果:
| Q1 | Q2 | Q3 | Group | y |
|----|----|----|-------|---|
| NA | 1 | NA | B | 1 |
| NA | 2 | NA | B | 2 |
| NA | NA | 3 | C | 3 |
| 4 | NA | NA | A | 4 |
| 5 | NA | NA | A | 5 |