在R語(yǔ)言中,可以使用scan()函數(shù)從鍵盤中獲取數(shù)據(jù)。scan()函數(shù)的語(yǔ)法格式可以參見《R語(yǔ)言中scan()函數(shù)參數(shù)詳解》。
1、直接輸入數(shù)據(jù)
輸入數(shù)據(jù)時(shí),可以每次輸完一個(gè)數(shù)據(jù)后換行,也可以以空格作為分隔符輸入數(shù)據(jù)。
(1)每行一個(gè)數(shù)據(jù)
scan()
1: 11
2: 12
3: 13
4:
Read 3 items
[1] 11 12 13
(2)以空格作為數(shù)據(jù)的分隔符
scan()
1: 11 12 13
4:
Read 3 items
[1] 11 12 13
(3)可以每行的數(shù)據(jù)量不同
scan()
1: 11 12
3: 13
4:
Read 3 items
[1] 11 12 13
以上在R中執(zhí)行的情況如下圖所示:

2、輸入數(shù)據(jù)時(shí)指定分隔符
scan(sep=",")
1: 11,12,13
4:
Read 3 items
[1] 11 12 13
這樣,允許用戶在輸入數(shù)據(jù)時(shí)指定自己所用的分隔符,這里是中文逗號(hào)。
3、輸入字符型數(shù)據(jù)
若使用scan()函數(shù)直接從鍵盤中輸入字符型數(shù)據(jù),需要指定what參數(shù)為character,否則出錯(cuò)。
(1)不指定what參數(shù)會(huì)報(bào)錯(cuò)
scan()
1: I Love China!
Error in scan() : scan() expected 'a real', got 'I'
(2)指定what參數(shù)
scan(what='character')
1: I Love China!
4:
Read 3 items
[1] "I" "Love" "China!"
(3)指定what參數(shù)和sep參數(shù)讀入多個(gè)字符串
scan(what='character',sep=',')
1: I Love China!,I Love Beijing!,I Love my Family!
4:
Read 3 items
[1] "I Love China!" "I Love Beijing!" "I Love my Family!"
本部分在R中的執(zhí)行情況如下圖所示:

4、輸入數(shù)據(jù)到變量中
v<-scan(sep=",")
1: 11,12,13
4:
Read 3 items
> v
[1] 11 12 13
5、可以使用scan()函數(shù)輸入數(shù)據(jù)創(chuàng)建其它數(shù)據(jù)對(duì)象
m<-matrix(scan(),nr=3,nc=4) #創(chuàng)建矩陣
vc<-c(scan()) #創(chuàng)建向量
arr<-array(scan(sep=','),dim=c(2,3,2)) #創(chuàng)建數(shù)組
fc<-factor(scan(what='c',sep=',')) #創(chuàng)建因子
以上的執(zhí)行情況如下圖所示:


6、也可以在創(chuàng)建數(shù)據(jù)對(duì)象時(shí)使用多個(gè)scan()函數(shù)
下面使用scan()函數(shù)創(chuàng)建一個(gè)數(shù)據(jù)框df
df<-data.frame(name=scan(what='c',sep=','),sex=scan(what='c',sep=','))
執(zhí)行情況如下圖:

7、關(guān)于scan()函數(shù)輸入數(shù)據(jù)結(jié)束的方法
在R中,當(dāng)使用scan()函數(shù)輸入數(shù)據(jù)時(shí),如果想退出輸入,可以多按一個(gè)空行,即結(jié)束輸入時(shí),按完回車后,再按一個(gè)回車鍵即可,在以上兩個(gè)圖中可以看到這種情況。
另外,如果輸完數(shù)據(jù),也可以按CTRL+Z快捷鍵結(jié)束輸入。

新聞熱點(diǎn)
疑難解答