[英]Assigning string to purrr::pluck function
我正在嘗試編寫一個助手 function 用於 purrr::pluck() 到 enframe() 代碼,我已經寫了太多次,但我正在努力如何正確傳遞 pluck 調用。
這是我試圖放入 function 的書面代碼的示例。
json_data %>%
purrr::pluck("Leagues", 1, "Events") %>%
enframe(name = NULL, value = "data")
這是 function
get_tibble <- function(data, pluck, name = NULL, value = "value") {
clean_tibble <- data %>%
purrr::pluck(pluck) %>%
enframe(name = name, value = value)
return(clean_tibble)
}
但是當我將 c("Leagues", 1, "Events") 傳遞給 pluck function 時,它不起作用。 它看起來像它,因為當它通過數字 1 時,它正在引用它,但我不知道如何在沒有它的情況下通過它。
這是一個例子
get_tibble <- function(data, pluck, name = NULL, value = "value") {
clean_tibble <- data %>%
purrr::pluck(pluck) %>%
enframe(name = name, value = value)
return(clean_tibble)
}
json_data <- list(
ResponseTime = "0s",
OddsType = "american",
Leagues = list(
list(
LeagueId = 889,
SportID = 15,
IsLive = FALSE,
HasLiveLines = FALSE,
Events = list(
data = NULL
),
EventCount = 1
)
)
)
##This works
clean_tibble <- json_data %>%
purrr::pluck("Leagues", 1, "Events") %>%
enframe(name = NULL, value = "data")
##This doesn't
clean_tibble <- json_data %>%
get_tibble(pluck = c("Leagues", 1, "Events"),
value = "data")
我們可以將 arguments 作為list
而不是向量傳遞,因為向量只能有一個類型
get_tibble <- function(data, pluck_value, name = NULL, value = "value") {
data %>%
pluck(!!! pluck_value) %>%
enframe(name = NULL, value = "data")
}
json_data %>%
get_tibble(pluck_value = list("Leagues", 1, "Events"),
value = "data")
-輸出
# A tibble: 1 x 1
# data
# <list>
#1 <NULL>
注意:輸入 arguments 的名稱也最好與 function 名稱不同,例如pluck
當我們這樣做時
c("Leagues", 1, "Events")
#[1] "Leagues" "1" "Events"
注意1
不是 integer,它是一個character
,這會產生一個問題,因為它將檢查名稱為1
的元素,而不是提取第一個元素
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.