本文的主要内容是讀取檔案内容,并且将檔案中的所有内容沒咧放在一個對象當中,以便之後進行操作,樣本資料如下
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)#到此獲得了所有的作者姓名并且無重複