我很努力在自己的函數中使用dplyr
函數。我更接近理解,但仍然缺乏充分理解。 這裏我有df
包含type
和D10
變量。使用dplyr創建一個具有多個參數的函數
df <- data.frame(type = c("KL", "KL", "A", "A", "B", "B", "9999", "-1"),
D10 = rnorm(8, 3, 4))
我想寫一個新列會如果type == "KL"
返回M
的功能; "-1"
如果type %in% c(9999, -1)
並且那將返回K
所有其他情況。我希望9999, -1, KL
的值可以在函數啓動時改變。
我試圖用我的函數結束了這個樣子:
klme <- function(dat, met, minusy = c(-1, 9999), Sortnr, type){
mutate_call <- lazyeval::interp(~ifelse(a %in% met, "M", ifelse(a %in% minusy, "-1", "K")), a = as.name(Sortnr))
dat %>% mutate_(.dots = setNames(list(mutate_call), type))
}
klme(df, c("KL"), minusy = c(-1, 9999), "Sortnr", "typ")
,只有K
在typ
列返回,而我想獲得這樣的輸出:
type D10 type.1
1 KL -5.3210620 M
2 KL 4.4832414 M
3 A -5.3979886 K
4 A 2.7933964 K
5 B -0.9602293 K
6 B 4.5097305 K
7 9999 -3.9650796 -1
8 -1 5.2700609 -1
https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html – Haboryme
鏈接不工作,反正我想我讀它,並完成了我提出的功能 – Mateusz1981
你必須將'sortnr ='type''傳遞給你的函數,否則你的結果將永遠是'K' – wici