找回密码
 立即注册
查看: 7889|回复: 11

R语言编程问题

[复制链接]
发表于 2017-2-6 08:43:42 | 显示全部楼层 |阅读模式
小弟初学R语言,图片中的问题,有大神能帮忙解答疑惑嘛?
3c6d55fbb2fb4316f759dbc629a4462308f7d3cc.jpg
回复

使用道具 举报

 楼主| 发表于 2017-2-7 14:35:09 | 显示全部楼层
没有人吗?自己顶一记{:soso__10169062262133571330_1:}
回复

使用道具 举报

发表于 2017-2-7 16:43:26 | 显示全部楼层
本帖最后由 huhaohoo 于 2017-2-8 09:42 编辑

#增加了注释,希望有用,继续学习
【我也刚学R,练手】

library('XML')#读取url内容
urlContent <- readLines("https://movie.douban.com/top250?format=text")
#解析html
htmlContent <- htmlParse(urlContent)
#搜索“电影名”节点
movieNameRaw <- xpathApply(htmlContent,"//ol[@class='grid_view']//div[@class='info']//div[@class='hd']//span[@class='title']")
#转化出dataframe格式,因为上面搜索出来的电影名需要后续处理
movieNameTmp <- xmlToDataFrame(movieNameRaw)
movieNameTmp <- as.matrix(movieNameTmp[[1]])
#搜索“电影”节点,获取当前页显示电影总数目,这个可以用来做校验,以及后续更多电影获取的处理【豆瓣第二页的url分页按一页多少电影区分:e.g. https://movie.douban.com/top250?start=25&filter=
#当前实例代码没用这个变量
movieNum <- length(xpathApply(htmlContent,"//ol[@class='grid_view']//div[@class='item']"))

#豆瓣电影名特殊处理【自己还是for循环思路,代码应该可以更高效】
#e.g. 把“肖申克的救赎 ”和“/ The Shawshank Redemption”连在一起
movieNameFinal <- rep(NA,movieNum)
movieCnt <- 0
for(i in 1:length(movieNameRaw))
{
  if(length(grep("\\s/\\s(.*)",movieNameTmp)) != 0)
  {
    movieNameFinal[movieCnt] <- paste0(movieNameFinal[movieCnt],movieNameTmp)
  }
  else
  {
    movieCnt <- movieCnt+1
    movieNameFinal[movieCnt] <- movieNameTmp
  }
}

#输出
> movieNameFinal
[1] "肖申克的救赎 / The Shawshank Redemption"                          
[2] "这个杀手不太冷 / Léon"                                            
[3] "霸王别姬"                                                         
[4] "阿甘正传 / Forrest Gump"                                          
[5] "美丽人生 / La vita è bella"                                       
[6] "千与千寻 / 千と千尋の神隠し"                                      
[7] "辛德勒的名单 / Schindler's List"                                 
[8] "泰坦尼克号 / Titanic"                                             
[9] "盗梦空间 / Inception"                                             
[10] "机器人总动员 / WALL·E"                                            
[11] "海上钢琴师 / La leggenda del pianista sull'oceano"               
[12] "三傻大闹宝莱坞 / 3 Idiots"                                       
[13] "放牛班的春天 / Les choristes"                                    
[14] "忠犬八公的故事 / Hachi: A Dog's Tale"                             
[15] "大话西游之大圣娶亲 / 西遊記大結局之仙履奇緣"                     
[16] "龙猫 / となりのトトロ"                                            
[17] "教父 / The Godfather"                                             
[18] "乱世佳人 / Gone with the Wind"                                    
[19] "楚门的世界 / The Truman Show"                                    
[20] "天堂电影院 / Nuovo Cinema Paradiso"                              
[21] "当幸福来敲门 / The Pursuit of Happyness"                          
[22] "触不可及 / Intouchables"                                          
[23] "搏击俱乐部 / Fight Club"                                          
[24] "十二怒汉 / 12 Angry Men"                                          
[25] "指环王3:王者无敌 / The Lord of the Rings: The Return of the King"

回复

使用道具 举报

 楼主| 发表于 2017-2-8 09:05:20 | 显示全部楼层
huhaohoo 发表于 2017-2-7 16:43
【我也刚学R,练手】

library('XML')

很厉害!还看不懂,能附带一些解释说明就好了。
回复

使用道具 举报

发表于 2017-2-8 09:24:27 | 显示全部楼层
huhaohoo 发表于 2017-2-7 16:43
【我也刚学R,练手】

library('XML')

很厉害!
学习!
可以附带一些解释说明吗?

回复

使用道具 举报

发表于 2017-2-8 09:43:16 | 显示全部楼层
更新了注释,希望有用
回复

使用道具 举报

 楼主| 发表于 2017-2-8 16:44:55 | 显示全部楼层
huhaohoo 发表于 2017-2-8 09:43
更新了注释,希望有用

厉害!感谢!学习....
回复

使用道具 举报

 楼主| 发表于 2017-2-8 16:58:21 | 显示全部楼层
问题如下:
patientID<-c(1,2,3,4)
age<-c(25,34,28,52)
diabetes<-c("Type1","Type2","Type1","Type1")
status<-c("Poor","Improved","Excellent","Poor")
diabetes<-factor(diabetes)
status<-factor(status,order=TRUE)
patientdata<-data.frame(patientID,age,diabetes,status)
patientdata
attach(patientdata)
会出现如下问题
The following objects are masked _by_ .GlobalEnv:
    age, diabetes, patientID, status
The following objects are masked from patientdata (pos = 3):
    age, diabetes, patientID, status

为什么patientdata无法绑定attach呢,是因为age, diabetes, patientID, status的赋值已经算一个环境变量,然后输出的patientdata的数据框算作另一个环境变量吗?无法理解,望大神解答。
回复

使用道具 举报

发表于 2017-2-9 09:18:53 | 显示全部楼层
huhaohoo 发表于 2017-2-8 09:43
更新了注释,希望有用

谢谢!学习
回复

使用道具 举报

发表于 2017-2-9 10:26:34 | 显示全部楼层
本帖最后由 huhaohoo 于 2017-2-9 10:38 编辑
新房客o 发表于 2017-2-8 16:58
问题如下:
patientID

这实例看着真眼熟,r语言实践来的吧。

函数attach()和detach()最好在你分析一个单独的数
据框,并且不太可能有多个同名对象时使用。任何情况下,都要当心那些告知某个对象已被屏蔽
(masked)的警告。

能找到哪个默认启动library包有一样的变量名呢? 暂时没想法【查看search()
http://blog.csdn.net/asongsongsong/article/details/51211378

建议不要用attach!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-23 02:07 , Processed in 0.035704 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表