[英]How to tell if a Github repository is an R package
我的目標是創建一個R函數(或一組R函數)以搜索Github(可能通過search API或其他方式),以標識Github上可用的R包。 這將模仿R的available.packages()
功能,但用於CRAN上的軟件包的開發版本(非)。
我認為這很容易。 看來不是。
首先可以搜索所有使用語言R 的存儲庫。 結果是大約8,199個存儲庫。 但是其中許多不是R包,而是書籍,課程或僅僅是雜項。 我希望能夠將搜索結果提供給devtools::install_github
函數,這顯然會在實際上不是軟件包的事情上慘敗。
那么,有什么方法可以確定Github存儲庫是否為R包? 我的直覺是能夠通過其區別特征來識別軟件包:
但是我不知道該怎么做。 顯然,可以下載每個存儲庫(就像devtools::install_github
一樣,然后檢查它是否是一個軟件包,但這似乎過多了)。
有什么見解嗎? (我不一定要在這里尋找完整的解決方案。)
您需要的只是一個您喜歡的語言的解析庫。 我從來沒有在R中做到過(通常,我使用Python),但我認為您會發現一些東西。 如果R工具用於解析將不夠方便,則可以使用另一種語言來解析數據並使用R對其進行處理。
您的搜索請求的網址是
https://github.com/search?p=1&q=language%3AR&ref=simplesearch&type=Repositories
然后看一下分頁塊。
<span class="disabled prev_page">◀</span>
<span class="current">1</span>
<a href="/search?p=2&q=language%3AR&ref=simplesearch&type=Repositories" rel="next">2</a>
<a href="/search?p=3&q=language%3AR&ref=simplesearch&type=Repositories">3</a>
<a href="/search?p=4&q=language%3AR&ref=simplesearch&type=Repositories">4</a>
<a href="/search?p=5&q=language%3AR&ref=simplesearch&type=Repositories">5</a>
<a href="/search?p=6&q=language%3AR&ref=simplesearch&type=Repositories">6</a>
<a href="/search?p=7&q=language%3AR&ref=simplesearch&type=Repositories">7</a>
<a href="/search?p=8&q=language%3AR&ref=simplesearch&type=Repositories">8</a>
<a href="/search?p=9&q=language%3AR&ref=simplesearch&type=Repositories">9</a>
<span class="gap">…</span>
<a href="/search?p=99&q=language%3AR&ref=simplesearch&type=Repositories">99</a>
<a href="/search?p=100&q=language%3AR&ref=simplesearch&type=Repositories">100</a>
<a href="/search?p=2&q=language%3AR&ref=simplesearch&type=Repositories" class="next_page" rel="next">▶</a></div>
您可以使用解析選擇器在此處獲得頁碼(100)。 然后,您可以解析所有回購標題和鏈接。 他們看起來像
<h3 class="repolist-name">
<a href="/hadley/devtools" class="css-truncate css-truncate-target">hadley/devtools</a>
</h3>
使用url並將頁面從1更改為最大,可以獲取所有存儲庫和鏈接。 然后看回購頁面。 例如,我們正在尋找NAMESPACE。
<td class="content">
<span class="css-truncate css-truncate-target"><a href="/hadley/devtools/blob/master/NAMESPACE" class="js-directory-link" id="7347fe5a0f184f79ef064e92e3beb297-5343453e5cabfcbdea6f829e232c6f994af44719" title="NAMESPACE">NAMESPACE</a></span>
</td>
只需搜索CSS類的“ js-directory-link”,您就會發現很多東西。
最后要做的是制定某種邏輯來做出決定!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.