0
使用top_n對於這樣data.frame
我想提出一個函數將返回選定變量的5點大意見:如何在一個R函數
df1 <- structure(list(Yta = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), Rad = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), Planta = c(1L,
2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L), Sortnr = c(8213L, 513L,
8060L, 8093L, 2131L, 8200L, 2378L, 8135L, 8156L, 8256L), Dia12 = c(53L,
29L, NA, NA, 53L, 6L, 20L, NA, 13L, 20L), Dia34 = c(177L, 39L,
NA, NA, 0L, 77L, 101L, NA, 77L, 95L), Vit34 = c(2L, 1L, NA, NA,
2L, 1L, 2L, NA, 1L, 1L), Ska1 = c(NA, 542L, NA, NA, 634L, NA,
NA, NA, NA, NA), Ska2 = c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_), Dia34_2 = c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_), block1 = c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), block = c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L), x = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2), y = c(1,
2, 3, 4, 5, 6, 1, 2, 3, 4), id = c("1:1:1", "1:1:2", "1:1:3",
"1:1:4", "1:1:5", "1:1:6", "1:2:1", "1:2:2", "1:2:3", "1:2:4"
)), .Names = c("Yta", "Rad", "Planta", "Sortnr", "Dia12", "Dia34",
"Vit34", "Ska1", "Ska2", "Dia34_2", "block1", "block", "x", "y",
"id"), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))
我想用dplyr
,因爲我喜歡它!我嘗試了這樣的功能,但錯誤!我覺得事情是與功能的第三個參數不被識別。會很感激小費如何克服這個問題
prMval <- function(df, sort, varia){
df %>% #filter(Sortnr == sort) %>%
#filter(!(Rad %in% c(min(Rad), max(Rad))) & !(Planta %in% c(min(Planta), max(Planta)))) %>%
top_n(5, varia)
}
prMval(df1, 2, Dia34)
Error: object 'varia' not found
top_n()的第二個參數是一個數字右邊的。因此它必須是df $ Dia34或在函數內部使用df [[Dia34]],然後傳遞prMval(df,2,「Dia34」) –
我沒有收到任何錯誤,如果我運行代碼,它只是返回一個爲我清空tibble數據框。 –
現在試一試,我不得不在數據框中觀察一些數據,因此過濾器將所有的觀察結果作爲 – Mateusz1981