全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5951 8
2010-11-17
代码是老师给的,验证本福特定律,但是R一直提示错误,我不知道我少装什么程序包了


library(xtable)
> options(encoding="latin1")
>  
> pob < - read.csv("http://www.grserrano.es/datos/pobmun09.csv")
错误: 找不到对象'pob'
> head(pob)
错误于head(pob) : 找不到对象'pob'
>  
> totprov <- pob[ is.na(pob[, "CMUN"]), ]   ## Totales de provincia
错误: 找不到对象'pob'
> pob     <- pob[!is.na(pob[, "CMUN"]), ]   ## Dejo sólo los municipios
错误: 找不到对象'pob'
>  
> pob[, "digpob"]  <- as.numeric(substr(as.character(pob[, "POB09"]), 1, 1))
错误于substr(as.character(pob[, "POB09"]), 1, 1) : 找不到对象'pob'
> digitos <- c(1:9)
> (abs.freq     <- table(pob[, "digpob"]))
错误于table(pob[, "digpob"]) : 找不到对象'pob'
> (benford.prob <- log10(1+1/digitos))
[1] 0.30103000 0.17609126 0.12493874 0.09691001 0.07918125 0.06694679
[7] 0.05799195 0.05115252 0.04575749
> tabmun  <- cbind( Observada  = prop.table(abs.freq),
+                   Teorica    = benford.prob,
+                   Municipios = abs.freq )
错误于prop.table(abs.freq) : 找不到对象'abs.freq'
> xtabmun <- xtable(tabmun, digits=c(0, 4,4,0), align="r|rr|r|",
+       caption="Frecuencias observadas, esperadas y número de municipios por el primer dígito de la población de los 8112 municipios espa&ntilde;oles a 1 de enero de 2009",
+       label="tab:benfordmun")
错误于xtable(tabmun, digits = c(0, 4, 4, 0), align = "r|rr|r|", caption = "Frecuencias observadas, esperadas y número de municipios por el primer dígito de la población de los 8112 municipios espa<U+00F1>oles a 1 de enero de 2009",  :
  找不到对象'tabmun'
> print(xtabmun, type="latex", file="tabmun.tex")
错误于print(xtabmun, type = "latex", file = "tabmun.tex") :
  找不到对象'xtabmun'
> #print(xtabmun, type="HTML", file="tabmun.html")
>  
> plot(digitos, tabmun[, "Observada"],
+      main="Ley de Benford para población de municipios espa&ntilde;oles",
+      xlab="Primer dígito", ylab="Frecuencia")
错误于xy.coords(x, y, xlabel, ylabel, log) : 找不到对象'tabmun'
> lines(digitos, tabmun[, "Teorica"], lty=2, col="blue")
错误于xy.coords(x, y) : 找不到对象'tabmun'
> legend("topright", c("Observado", "Teórico"), lty=c(0,2),
+        pch=c(1,NA), col=c("black", "blue"))
> grid()
> utils:::menuInstallPkgs()
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-11-17 03:24:11
1# leticiatt
You did not read the file into your R in the very third line.

pob <- read.csv("......") not pob < - read.csv(".......")

the program should run like the following:

> library(xtable)
> options(encoding="latin1")
> pob <- read.csv("http://www.grserrano.es/datos/pobmun09.csv")
> head(pob)
  CPRO   PROVINCIA CMUN           NOMBRE  POB09 VARONES MUJERES
1   NA Total álava   NA                  313819  156418  157401
2    1       álava    1 Alegría-Dulantzi   2620    1353    1267
3    1       álava    2          Amurrio  10089    5069    5020
4    1       álava   49            Añana    176      92      84
5    1       álava    3          Aramaio   1499     781     718
6    1       álava    6          Armiñón    207     103     104
> totprov <- pob[ is.na(pob[, "CMUN"]), ]   ## Totales de provincia
> pob     <- pob[!is.na(pob[, "CMUN"]), ]   ## Dejo s¨®lo los municipios
> pob[, "digpob"]  <- as.numeric(substr(as.character(pob[, "POB09"]), 1, 1))
> digitos <- c(1:9)
> (abs.freq     <- table(pob[, "digpob"]))

   1    2    3    4    5    6    7    8    9
2521 1462 1008  745  645  533  435  400  363
> (benford.prob <- log10(1+1/digitos))
[1] 0.30103000 0.17609126 0.12493874 0.09691001 0.07918125 0.06694679 0.05799195
[8] 0.05115252 0.04575749
> tabmun  <- cbind( Observada  = prop.table(abs.freq),Teorica    = benford.prob,Municipios = abs.freq )
> xtabmun <- xtable(tabmun, digits=c(0, 4,4,0), align="r|rr|r|",caption="Frecuencias observadas, esperadas y n¨2mero de municipios por el primer d¨agito de la poblaci¨®n de los 8112 municipios espa&ntilde;oles a 1 de enero de 2009",label="tab:benfordmun")
> print(xtabmun, type="latex", file="tabmun.tex")
> #print(xtabmun, type="HTML", file="tabmun.html")
> plot(digitos, tabmun[, "Observada"],
+      main="Ley de Benford para poblaci¨®n de municipios espa&ntilde;oles",
+      xlab="Primer d¨agito", ylab="Frecuencia")
> lines(digitos, tabmun[, "Teorica"], lty=2, col="blue")
> legend("topright", c("Observado", "Te¨®rico"), lty=c(0,2),
+        pch=c(1,NA), col=c("black", "blue"))
> grid()


with a graph output
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-17 04:00:30
楼上说的对,赋值符号是 <- ,两个是连在一起的。或者你可以用=号来代替<-
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-17 04:04:34
其实你自己就可以发现问题之说在。从第二行开始出现的问题,你就只要看第二行就可以了。把第二行的错误搞定之后,再往下看。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-18 12:02:19
you should study more carefully
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-24 01:00:25
谢谢楼上各位
请问有谁有兴趣给我做做家教啊
关于R的
不胜感激
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群