我正在尝试使用 forloop 从列表中提取值。该列表包含我从网页中抓取的 77 个元素。它们被放入一个列表中,strsplit 与相当困惑的正则表达式相匹配。
chunk <- strsplit(lines, "(<tr>|</td>)(<td>|<td[^>]+>)|aws| MB| KB")
示例元素如下所示:
> chunk[76]
[[1]]
[1] ""
[2] "<img src=\"/images/"
[3] "tats/flags/mn.png\" height=\"14\" alt='mn' title='mn' />"
[4] "Mongolia"
[5] "mn"
[6] "1"
[7] "1"
[8] "21.95"
[9] ""
[10] "<img src=\"/images/"
[11] "tats/other/hp.png\" width=\"2\" height=\"5\" alt='Pages: 1' title='Pages: 1' /><br />"
我尝试提取我需要的每个元素的部分:
for (i in length(chunk)) {
values <- chunk[[i]][c(4,6:8)]
}
值返回的结果始终是最后一个列表元素的提取部分(chunk[[77]])
任何人都可以建议如何获取每个列表元素所需的值。
最佳答案
您应该替换values <- chunk[[i]][c(4,6:8)]
与 values <- rbind(values,chunk[[i]][c(4,6:8)])
(在循环之前初始化values <- NULL
)。
或者您可以在循环之前创建一个矩阵 values <- matrix(0,length(chunk),4)
并在循环中使用 values[i,] <- chunk[[i]][c(4,6:8)]
。这样效率更高!
关于list - 使用for循环从列表中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5429837/