![](/img/trans.png)
[英]How do I select specific coeficients in R when I am trying to find out a perfect fit in R
[英]In R, I am trying to loop through variables of lists and pull out a specific index from each one
在R中,我使用readHTMLTable
從Web讀取表。 我想要的表出現在索引16和17 [[16]]
& [[17]]
。
以下是供您使用的一小部分數據示例:
這些是包含HTML表的一些URL。
url1 = "http://www.basketball-reference.com/leagues/NBA_1980.html"
url2 = "http://www.basketball-reference.com/leagues/NBA_1981.html"
url3 = "http://www.basketball-reference.com/leagues/NBA_1982.html"
在這里,我讀了表中的變量x1,x2和x3。
x1 = readHTMLTable(url1)
x2 = readHTMLTable(url2)
x3 = readHTMLTable(url3)
如果查看每個summary(x1)
, summary(x2)
, summary(x3)
並通過索引遞減計數,則我想要的表分別是名為“ team”和“ opponent”的表第16行和第17行。
我一直在嘗試編寫一個循環,循環遍歷這些循環,並將每個循環的“ team”表命名為分別名為team.1980
, team.1981
和team.1982
的變量。 “對手”表將遵循相同的趨勢, opp.1980
,依此類推。
這是我一直在嘗試的循環代碼:
for(i in 1:3) {
for (j in 1980:1982) {
nam1 = paste0("team.", j)
nam2 = paste0("opp.", j)
assign(nam1, paste0("x.", i)[[16]])
assign(nam2, paste0("x.", i)[[17]])
}
}
我認為此循環背后的理論是可行的,但是兩個assign
函數會出現問題:
assign(nam1, paste0("x.", i)[[16]])
assign(nam2, paste0("x.", i)[[17]])
運行循環時,出現錯誤信息
Error in paste0("x.", i)[[16]] : subscript out of bounds
如果我剛運行,就會遇到相同的錯誤:
paste0("x", 1)[[16]]
> paste0("x", 1)[[16]]
Error in paste0("x", 1)[[16]] : subscript out of bounds
所以我很確定這是我的問題所在。 有誰知道我如何遍歷變量並從每個變量中提取索引?
請記住,我是R的新手,因此非常感謝簡單! 提前致謝!
readHTMLTable()
的輸出是一個列表,並且可以按名稱引用元素。 索引不是必需的。 (盡管可以使用。)
假設x1
, x2
和x3
的定義與您的帖子相同。 然后,您可以執行以下操作:
for (i in 1:3) {
year <- 1980 + i - 1
eval(parse(text=paste0("team.", year, " <- x", i, '[["team"]]')))
eval(parse(text=paste0("opp.", year, " <- x", i, '[["opponent"]]')))
}
這將評估在循環中動態構造的已解析文本。 它創建6個數據框: team.1980
和opp.1980
(1980-1982年)。
讓我們仔細看看它在做什么...
首先,使用paste0()
構造一個字符串,以將值連接成沒有分隔符的字符串。 在第一次迭代中第一次調用paste0()
產生以下字符串:
'team.1980 <- x1[["team"]]'
對此調用parse()
告訴R將字符串轉換為稱為表達式的對象。 可以使用eval()
評估表達式。 因此,此字符串變成R語句並執行,從而分配了team.1980
。
對於3個迭代中的每一個,此過程都會繼續。
這可能不是最好的方法,但是它應該適合您的情況。 我假設您不僅有這6個,否則您最好將它們寫為單獨的作業。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.