天天看點

R語言讀取檔案

本文的主要内容是讀取檔案内容,并且将檔案中的所有内容沒咧放在一個對象當中,以便之後進行操作,樣本資料如下

kernel    coorauthor     num

鄭稱德     丁俊武         1

鄭稱德     韓玉啟         2

鄭稱德     周梅           3

丁俊武     韓玉啟         4

丁俊武     鄭稱德         4

丁俊武     周梅           4

丁俊武     仇成           43

丁俊武     馮俊文         1

丁俊武     高常青         321

韓玉啟     丁俊武         312

韓玉啟     鄭稱德         21

韓玉啟     周梅           42

張瑞紅     檀潤華         21

張瑞紅     劉芳           21

張瑞紅     楊伯軍         213

張瑞紅     江屏           12

張瑞紅     苑彩雲         21

張瑞紅     曹東興         21

張瑞紅     馬建紅         21

張瑞紅     張換高         12

張瑞紅     曹國忠         21

張瑞紅     李樹洋         32

kernel<-0                  #将檔案中的第一列的資料放在kernel對象當中
coorauthor<-0              #将檔案中的第二列資料放在coorauthor對象當中
num<-0                     #将檔案中的第三列資料放在num當中
count<-0                   #記錄目前讀到第count行了,同時也是以上三對象的索引值
count[1]<-0
input<-file("E:\\sample.txt","r")
line=readLines(input,n=1)
line=readLines(input,n=1) #由于第一行不是資料,是以直接跳過第一行
while(length(line)!=0)
{
   count[1]=count[1]+1
   va=strsplit(line,"\t")#樣本中每個資料間隔就是tab
   kernel[count[1]]=va[[1]][1]
   coorauthor[count[1]]=va[[1]][2]
   num[count[1]]=va[[1]][3]  
   line=readLines(input,n=1)   
}
close(input)
var_1<-0
tmp_1=setdiff(kernel,var_1)#setdiff是求得kernel集合和var_1集合當中的差集,也就是kernel當中非重複元素,然後放在tmp_1當中,其中kernel和var_1的順序無關
var_2<-0
tmp_2=setdiff(coorauthor, var_2)
var_1_len=length(tmp_1)#第一個作者的數量
var_2_len=length(tmp_2)#第二個作者的數量
var_sum<-0#目标數組清空
for(i in 1:var_1_len)
{
var_sum[i]=tmp_1[i]#将第一列中的作者姓名放在var_sum當中
print(var_sum)
}
from=var_1_len+1#記錄下所有的var_sum數組中下一個元素的位置,由此開始記錄
to=var_1_len+var_2_len
for(i in from:to)
var_sum[i]=tmp_2[i-var_1_len]
var_sum=setdiff(var_sum,var_1)#到此獲得了所有的作者姓名并且無重複
           

繼續閱讀