簡體   English   中英

將字符串分配給 purrr::pluck function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM