小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

R語言系列X1:R4.0:stringsAsFactors或默認(rèn)為FALSE

 松哥精鼎統(tǒng)計(jì) 2020-10-23
導(dǎo)讀
    自R創(chuàng)建以來,在默認(rèn)情況下,在R中直接使用data.frame()或read.table()時(shí),stringsAsFactors和as.is默認(rèn)是都是將字符串轉(zhuǎn)換為因子,在3.6.2版本之前,都是這樣的,但是在4.0版本中,這有可能發(fā)生改變。這是筆者使用時(shí)發(fā)現(xiàn)的問題,屬于R系列的雜談部分,也許大家也會(huì)碰到!

歷史





    在R 的歷史 ,我們講到, Ross Ihaka  and Robert Gentleman  兩位教授在1992年開始著手創(chuàng)建R,1995年R有了雛形,2000年R才有了第一個(gè)正式版本。

    在1998年,R發(fā)布了0.62版本,內(nèi)部代碼被John Chambers貢獻(xiàn)的Statlib代碼替換,其效果是data.frame()函數(shù)通過stringsAsFactors始終將字符串轉(zhuǎn)換為因數(shù)(除非受所保護(hù)I()),而read.table()始終具有as.is和stringsAsFactors參數(shù)。

舉例解釋





    我們用data.frame()來舉例說明
    首先,我們創(chuàng)建一個(gè)數(shù)據(jù)框
df = data.frame(num=1,chr='a')df## num chr## 1 1 a

    數(shù)據(jù)框df是一個(gè)2列1行的數(shù)據(jù),第1列是數(shù)字1,第2列是字母2。我們使用str()函數(shù)來查看數(shù)據(jù)結(jié)構(gòu)。

str(df)## 'data.frame': 1 obs. of 2 variables:## $ num: num 1## $ chr: Factor w/ 1 level "a": 1

    我們發(fā)現(xiàn)num列是數(shù)字類型numeric;chr是factor類型。我們?cè)谑褂肐()將作用在chr上
df_I = data.frame(num=1,chr=I('a'))str(df_I)## 'data.frame': 1 obs. of 2 variables:## $ num: num 1## $ chr: 'AsIs' chr "a"

    我們看到,這個(gè)時(shí)候chr列就不是factor,而是char了。

問題在哪里?






    那么為什么要改變?問題在哪里?我們使用unlist()函數(shù)來演示問題。

unlist(list(df))## num chr## 1 1unlist(list(df_I))## num chr## "1" "a"
    看到差別了嗎?
    前者將a轉(zhuǎn)行成了1,后者則保留了a,后者顯然是我們想要的。
    這只是一個(gè)小例子,相信很多R的使用者并沒有注意到這一點(diǎn),或者會(huì)覺得很奇怪。

R4.0初體驗(yàn)






  你可以在這里下載R4.0體驗(yàn)版windows系統(tǒng):https://cran./bin/windows/base/rdevel.html


    mac(macx)系統(tǒng):http://mac./
    linus系統(tǒng):R網(wǎng)站上自己找一下,在R4.0中的演示。
version## _ ## platform x86_64-w64-mingw32 ## arch x86_64 ## os mingw32 ## system x86_64, mingw32 ## status ## major 4 ## minor 0.0 ## year 2020 ## month 02 ## day 21 ## svn rev 77847 ## language R ## version.string R Under development(unstable)## nickname Unsuffered Consequencesdf_4=data.frame(num=1,chr='a')str(df_4)## 'data.frame': 1 obs. of 2 variables:## $ num: num 1## $ chr: Factor w/ 1 level "a": 1

    很遺憾,在pre-R 4.0中,我并未發(fā)現(xiàn)stringsAsFactors默認(rèn)為FALSE,不知道在正式版的4.0中是否會(huì)發(fā)生改變,一起期待。

總結(jié)






   是否將string轉(zhuǎn)換為factor,一定要自己小心。


精鼎特邀

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多