2016-09-22 22 views
0

我正在創建一個R包,並且我想要依賴falsy包,該包最近從CRAN獲得了archived在包中包含已存檔的CRAN包

使用非歸檔軟件包時,通常會將軟件包名稱添加到DESCRIPTION文件中的Imports列表中。如何導入由CRAN歸檔的軟件包?

注意:在與Gábor聯繫之後,似乎將falsy歸檔的原因是由於潛在的inconsistencies原生和falsy虛假概念之間的原因。他不打算解包該軟件包。

+0

[This](http://stackoverflow.com/a/32533483/324364)可能是您正在尋找的答案...? – joran

+0

這絕對是一個解決方案,但理想的解決方案不需要最終用戶的任何操作。 – user12341234

+0

關於該問題的評論也討論了在github上創建自己的** drat ** repo的選項,這可能對您更有用,但對用戶來說可能更少。 – joran

回答

0

此:

FALSY <- FALSE 

TRUTHY <- TRUE 

is_falsy <- function(object) { 
    is.null(object) || 
    identical(object, FALSE) || 
    identical(object, 0L) || 
    identical(object, 0.0) || 
    identical(object, 0+0i) || 
    identical(object, "") || 
    identical(object, as.raw(0)) || 
    identical(object, logical()) || 
    identical(object, integer()) || 
    identical(object, double()) || 
    identical(object, complex()) || 
    identical(object, character()) || 
    identical(object, raw()) || 
    identical(object, list()) || 
    inherits(object, "try-error") 
} 

is_truthy <- function(object) { 
    ! is_falsy(object) 
} 

`%&&%` <- function(lhs, rhs) { 
    lres <- withVisible(eval(lhs, envir = parent.frame())) 
    if (is_truthy(lres$value)) { 
    eval(rhs, envir = parent.frame()) 
    } else { 
    if (lres$visible) { lres$value } else { invisible(lres$value) } 
    } 
} 

nay <- function(rhs) { 
    if (is_falsy(rhs)) { TRUTHY } else { FALSY } 
} 

try_quietly <- function(expr) { 
    try(expr, silent = TRUE) 
} 

是封裝的整個範圍(減去roxygen註釋)。爲什麼不把它包含在你的包裏?

如果他沒有這樣做,可能會問Gabor他是否計劃將其重新發布到CRAN或者如果您可以接管維護?

+0

我已聯繫Gabor,等待回覆。我很猶豫直接複製源代碼,因爲我認爲代碼複製本質上是不好的。 – user12341234

+0

它比依靠歸檔軟件包顯着**更好。 – hrbrmstr

+0

有趣。你說這些的理由是什麼? – user12341234