如何從R的等級檢查當前安裝的R是否是最新的?查找已安裝的R版本很容易,但如何檢查最新版本的數量是多少?這種信息是否可以通過CRAN獲得?如何以編程方式檢查當前安裝的R是否是最新的?
回答
在我最喜愛的搜索引擎快速搜索發現this post by Yihui Xie,我變成了一個功能:
checkRversion <- function(){
x = readLines("http://cran.r-project.org/sources.html")
# the version number is in the next line of 'The latest release'
rls = x[grep("latest release", x) + 1L]
newver = gsub("(.*R-|\\.tar\\.gz.*)", "", rls)
oldver = paste(getRversion(), collapse = ".")
# new version available?
message("Installed version: ", oldver)
message("Latest version: ", newver)
compareVersion(newver, oldver)
}
在使用中:
checkRversion()
Installed version: 3.0.1
Latest version: 3.0.1
[1] 0
它也被列在R-FAQs中:http://cran.r-project.org/doc/FAQ/R-FAQ.txt在短語「當前發佈的版本」之後。 – Thomas
可以使用的方法從gtools
。
代碼與Andrie的答案類似,但明確使用/src/base/R
文件夾 - 而不是sources.html
文件,所以它可能更加健壯,因爲它依賴於實際的二進制文件。
一個小問題是,gtools
硬編碼的文件夾名稱,所以「現況」他們的代碼是錯誤的 - 但我很喜歡這個主意,所以我更新了它在可用的CRAN網址迭代,並找到最新的一個:
checkRVersion <- function (quiet = FALSE)
{
baseUrl <- "http://cran.r-project.org/src/base/R-"
majorVersion <- 3
repeat {
url <- paste(baseUrl, majorVersion, sep = "")
if (url.exists(url)) {
majorVersion <- majorVersion + 1
}
else {
break
}
}
url <- paste(baseUrl, (majorVersion-1), sep = "")
page <- scan(file = url, what = "", quiet = TRUE)
matches <- grep("R-[0-9]\\.[0-9]+\\.[0-9]+", page, value = TRUE)
versionList <- gsub("^.*R-([0-9].[0-9]+.[0-9]+).*$", "\\1", matches)
versionList <- numeric_version(versionList)
if (max(versionList) > getRversion()) {
if (!quiet) {
cat("A newer version of R is now available: ")
cat(as.character(max(versionList)))
cat("\n")
}
invisible(max(versionList))
}
else {
if (!quiet) {
cat("The latest version of R is installed: ")
cat(as.character(max(versionList)))
cat("\n")
}
invisible(NULL)
}
}
但R目前在3.0.1 ... – Thomas
好抓!然後解析'sources.html' - 減少麻煩 - 我會保留我的答案,以防萬一有人在這裏遇到'gtools' .. – andreister
從'library(RCurl)',你也可以執行'url.exists(「http:/ /cran.r-project.org/src/base/R-3「)'和'url.exists(」http://cran.r-project.org/src/base/R-4「)等等。直到你有一個'FALSE'。 – Thomas
- 1. 如何以編程方式檢查是否安裝使用Java
- 2. 如何以編程方式檢測當前系統上是否安裝了MSMQ?
- 3. iOS:如何以編程方式檢查應用是否是最新的?
- 4. 如何以編程方式檢測是否是Windows 8.1更新安裝
- 5. 檢查Stackable文件系統是否以編程方式安裝
- 6. 如何以編程方式檢查Visio是否已安裝以及在哪裏?
- 7. 如何以編程方式檢查應用程序是否安裝在Android中?
- 8. 如何以編程方式檢查是否安裝了應用程序?
- 9. 如何檢查QQ(tencent)應用程序是否安裝在Android上或不是以編程方式安裝?
- 10. 如何以編程方式檢查是否安裝了SAP Business One客戶端
- 11. 以編程方式檢測Windows Media Player是否已安裝
- 12. 如何檢查是否安裝了OpenOffice的編程方式使用C#
- 13. 以編程方式檢查年份是否最有效的方法是什麼
- 14. 以編程方式檢查是否安裝了Windows消息傳遞?
- 15. XCode 6 - iOS 8:以編程方式檢查視圖是否安裝
- 16. Vagrantfile如何檢查最終是否安裝並安裝?
- 17. 如何檢查是否以編程方式請求頁面?
- 18. 如何檢查iCloud是否以編程方式配置
- 19. 如何以編程方式檢查MP4是否損壞?
- 20. 如何以編程方式檢查Zookeeper是否正在運行
- 21. 如何以編程方式檢查wcf服務是否停止
- 22. 如何以編程方式檢查iCloud Drive是否被激活
- 23. 如何檢查藍牙是否以編程方式啓用?
- 24. 如何以編程方式檢查鍵盤是否連接?
- 25. 如何以編程方式檢查Zookeeper是否正在運行?
- 26. 如何以編程方式檢查Microsoft.Office.Interop.Excel是否適用於VB?
- 27. 如何檢查應用程序是否提前安裝?
- 28. 如何檢查之前是否安裝了iPhone應用程序?
- 29. 安裝前檢查Java是否存在
- 30. 以編程方式安裝應用程序組的適當方式是什麼?
這是[CRAN](http://cran.r-project.org/)。你在問如何從R中檢查? – Thomas
@Thomas,是的 - 如何檢查R? – Qbik