整個過程先瞄下先
2 下載文件
親身痛苦的實驗,發現在window中不需用curl方法,自己還在那實驗半天,哎哎,另外,如果還不行的話,將https改爲http可能會有效一些,https比http多了個安全協議
讀取當地文件
read.table()中一定要設置分隔符sep="",
而read,csv()中默認設置分隔符爲comma,header=true,因爲csv中是以逗號爲分隔符的
讀取excel數據
讀取XML數據
library('XML')
fileurl <- "http://www.w3schools.com/xml/simple.xml" 輸入url地址
doc <-xmlTreeParse(fileurl,useInternal=TRUE) 好像是讀取全部文件的意思,若不加後面那個useInternal,則會出現很多屬性
rootNode <- xmlRoot(doc)所有的結點 類似於the entire document
xmlName(rootNode) 根結點名字
names(rootNode)次結點名字
不知道htmlTreeParse與xmlTreeParse之間的區別呢
讀取json數據
讀入jsonlite包:library(jsonlite)
讀取數據:jsondata <- fromJSON("網站地址“)
查看名字:names(jsondata)
names(jsondata$owner)查看owner下的所有對象名
jsondata$owner$login查看owner下的login
myjson<- toJSON(iris,pretty=TRUE)轉換成JSON形式,若無pretty=TRUE,則看起來很難受,所有數據全在一行,有的話,會很好看
cat(myjson)附用法 ?+要查的東西,也可以查函數,如?cat
iris2 <- fromJSON(myjson)
head(iris2) 取前六個 ,與之對應的是tail()取後幾個
用data.table來讀數據
繼承了data.,frame(例子中DT即我寫的da)
所有能在data,.frame上工作的函數也能在data,,table上工作
用c 寫的所以日快
提取子集,分組和更新數據的時候表現的更更快
data table 可以像data frame一樣使用
如library(data.table)
da=data.frame(x=rnorm(9),y=rep(c("a","b","c"),each=3),z=rnorm(9))此處將data.frame改爲data.table也是一樣的
可以通過tables()來查看其內存情況
抽取行:da[2,]抽第二行 da[da$y=="a"] da[c(2,3)]抽取第二三行
抽取列 da[,c(2,3)]在dataframe中是抽取第二和第三列,而在table中則是顯示 [1] 2 3不知何意呢,如下可見,用列的表示方法得出不是想象中這樣
以下是列的用法
此處;就是兩個expression的意思,前者爲print(10),後者爲將5賦值給k
此處當用data.frame形式來加列的話,會在內存中複製一份,再將列加上去,於是內存中有了兩份數據,對於大數據而言,很不幸的說呢
而用table形式則無此不良後果,但也會有危險,如下下張圖中所示
先寫下,再看代碼da1<-da da[,y:=2] :=一定要有的,結果如下
除上面那個注意點之外呢,它的強大之處在於
當然更可以這樣
更可以以更快的速度來讀取