所以,我創建了一個列表的CSV文件:循環執行的CSV文件
tbl = list.files(pattern="*.csv")
然後,我把他們分開成兩個不同的列表:
tbl1 <- tbl[c(1,3:7,10:12,14:18,20)]
tbl2 <- tbl[c(2,19,8:9,13)]
然後加載它們:
list_of_data1 = lapply(tbl1, read.csv)
list_of_data2 = lapply(tbl2, read.csv)
現在我想創建一個主文件。我只想從每個csv文件中選擇一些數據並將其存儲在一個表中。要做到這一點,我創建這樣的循環:
gdata1 = lapply(list_of_data1,function(x) x[3:nrow(x),10:13])
for(i in 1:length(list_of_data1)){
rownames(gdata1[[i]]) = list_of_data1[[i]][3:nrow(list_of_data1[[i]]),1]
}
tmp = lapply(gdata1,function(x) matrix(as.numeric(x),ncol=4))
final.table1=c()
for(i in 1:length(gnames)){
print(i)
tmp=gnames[i]
f1 = function(x) {x[tmp,]}
tmp2 = lapply(gdata1,f1)
tmp3 = c()
for(j in 1:length(tmp2)){
tmp3=rbind(tmp3,tmp2[[j]])
}
tmp4 = as.vector(t(tmp3))
final.table1 = rbind(final.table1,tmp4)
}
rownames(final.table1) = gnames
我創建的數據的兩份不同名單,因爲在第一個list_of_data1
有四個有趣列,我(10:13)和另一個list_of_data2
只有3列(10:12)。我想把所有的數據放在一張表中。有沒有辦法在一個循環中完成它?
我有一個想法如何解決這個問題。我可以爲list_of_data2
創建一個新循環,然後使用cbind
將它們兩者綁定。我想以更優雅的方式來做,所以我來到這裏!
的問題是,我在每個CSV不同數目的行/列的文件。一些名字重複並且以不同的順序變化。我不知道do.call是否能夠處理這些問題。這就是爲什麼我決定用循環做到這一點。我製作了一個我感興趣的名稱矢量,並嘗試從每個csv文件中選擇有趣的值,並將它們放在一個表中。如果有人有機會幫助我,我可以寫一個新的「線索」並解釋一切。 –
啊,我明白了。我沒有注意到你的問題中的細微差別。因此,假設您有一個包含10行2列的csv文件1,另一個文件2包含3行3列感興趣的文件。你將如何去結合這些?您計劃合併的關鍵是否? – JPC
對不起,遲到了,但我剛搬到新的公寓,我在家裏沒有互聯網連接,只是在工作。有20個csv文件,他們都有15-20列和3000行。一些行的名稱是相同的,其中一些是不同的。我創建了一個包含所有行名稱的向量,現在我想用來自所有csv文件中的4列的數據填充表格。所以我將以基因名稱的一列結束,然後像80列數據(每個csv文件4列)。這就是爲什麼我想要創建一個可以收集所有數據的循環。 –