我想從包中自定義pin_write功能:pins
原來的作業方式是:
library(pins)
# create board:
board_versioned <- board_folder("your path", versioned = TRUE)
board_versioned %>%
pin_write(iris, "iris")
# gives:
# Guessing `type = 'rds'`
# Creating new version '20221030T182552Z-f2bf1'
# Writing to pin 'iris'
現在我想創建一個自定義函式:
library(pins)
my_pin_write <- function(board, df) {
board %>%
pin_write(df, deparse(substitute(df)))
}
my_pin_write(board_versioned, iris)
#gives:
# Guessing `type = 'rds'`
# Replacing version '20221030T182736Z-f2bf1' with '20221030T182750Z-f2bf1'
# Writing to pin 'df'
問題是要固定 'df'。我希望: 寫信給'iris'
在這種情況下,我無法管理如何將資料幀作為名稱作為字串傳遞。非常感謝!
uj5u.com熱心網友回復:
您正在使用管道呼叫。在這種情況下,將在管道環境中搜索 df,如果沒有找到,使用 df 你有 2 個選項,不要使用管道,即
pin_write(board, df, deparse(substitute(df)))
如果要替換使用函式環境,或者如果使用管道,請在管道外呼叫替換函式。例如
nm <- deparse(substitute(df))
board %>%
pin_write(df, nm)
您可以決定使用 rlang::enxpr 函式:
board %>%
pin_write(df, deparse(rlang::enxpr(df)))
uj5u.com熱心網友回復:
我們可以做
my_pin_write <- function(board, df) {
board %>%
pin_write(df, rlang::as_string(rlang::ensym(df)))
}
-測驗
> my_pin_write(board_versioned, iris)
uj5u.com熱心網友回復:
另一種選擇是用自 R 4.1.0 起可用的 R 本機管道 ( ) 替換magrittr' 管道 ( )。%>%|>
library(pins)
board_versioned <- board_folder("your path", versioned = TRUE)
my_pin_write <- function(board, df) {
board |>
pin_write(df, deparse(substitute(df)))
}
my_pin_write(board_versioned, iris)
#> Guessing `type = 'rds'`
#> Creating new version '20221031T091813Z-911fb'
#> Writing to pin 'iris'
使用reprex v2.0.2創建于 2022-10-31
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523698.html
標籤:r功能引脚
上一篇:Python函式幫助,有人能告訴我為什么它不起作用嗎?
下一篇:每組五顆星由一條垂直線隔開
