【发布时间】:2021-03-31 11:29:34
【问题描述】:
我正在尝试为 purrr::pluck() 编写一个辅助函数来 enframe() 代码,但我正在努力解决如何正确传递 pluck 调用。
这是我试图放入函数的书面代码示例。
json_data %>%
purrr::pluck("Leagues", 1, "Events") %>%
enframe(name = NULL, value = "data")
这里是函数
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 函数时,它不起作用。它看起来像它,因为当它通过数字 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")
【问题讨论】:
-
你能展示一个可重现的小例子吗
-
在示例中尝试粗略。显然没有建立完整的数据集,但希望问题很清楚。
-
在您提到的第一个示例中,我得到了一个 NULL
list。这是你的预期吗 -
是的,我只是想达到那个水平