我使用XML包从HTML表格中收集了一些信息:
IntExpr x = ctx.mkIntConst("x");
solver.add(ctx.mkGT(x, ctx.mkInt(0))); // (assert (> x 0))
solver.add(ctx.mkLT(x, ctx.mkInt(5))); // (assert (< x 5))
library("XML")
library("RCurl")
library("rlist")
theurl = getURL("http://www.victoria2wiki.com/Countries_table", .opts = list(ssl.verifypeer = FALSE))
tables <- readHTMLTable(theurl, as.data.frame = TRUE)
现在包含来自页面上表格的tables
信息。
然后,我们使用以下内容将此list
转换为list
dataframe
df <- do.call(rbind.data.frame, tables)
显示
names(df)
[1] " Country\n" " Tier\n" " Population\n" " Literacy\n"
显示所有人口数量。我们尝试使用以下方式绘制它:
df[,3]
,但图表不正确,并在X轴上显示人口数量,但没有意义。
我们如何根据简单的R数据框架绘制国家名称与人口的关系?我们想要的是Y轴上的种群和X轴上的国家名称的简单线图。
答案 0 :(得分:2)
这是一个可能的解决方案:
library("XML")
library("RCurl")
library("rlist")
theurl = getURL("http://www.victoria2wiki.com/Countries_table", .opts = list(ssl.verifypeer = FALSE))
tables <- readHTMLTable(theurl, as.data.frame = TRUE)
# tables is a list with two elements
# The data frame is stored in the second element of this list
df <- tables[[2]]
colnames(df) <- c("Country", "Tier", "Population", "Literacy")
# Population is a factor and needs to be converted into a numeric vector
par(mar=c(3,7,1,1))
barplot(as.numeric(gsub(",", "", df$Population)),
names.arg=df$Country, horiz=T, las=1, cex.names=0.6)