我有一個很大的data.frame,我想將列內的值連接在一起,然後用輸出創建一個新的data.frame 。由於我的data.frame有近1700列,我認爲最簡單的方法是循環遍歷列。以下是我想要做的一個例子。循環遍歷data.frame中的列,並根據循環中的計算創建新的data.frame
初始值:
variable1 = c(var1, var2, var3)
variable2 = c(var4, var5, var6)
variable3 = c(var7, var8, var9)
df = data.frame(variable1, variable2, variable3)
預期輸出:
variable1 variable2 variable3
1 var1_var2 var4_var5 var7_var8
2 var1_var3 var4_var6 var7_var9
3 var2_var3 var5_var6 var8_var9
我現在使用的代碼是:
index = 1
column = 1
Complexes <- dim(df)[2]
proteins <- dim(df)[1]
complex <-list()
interactions <- list()
complexcol <- list()
for(i in 1:Complexes){
complex[[column]]=(for(j in 1:proteins){
for(k in j+1:proteins){
interactions[index] = c(paste0(corum[i,j],"_",corum[i,k]))
index = index +1
}
})
column = column + 1
print(column)
index = 1
}
當我執行,它通過迭代列,但它不會在新列表或data.frame中生成輸出。
謝謝!
如果data.frame中的值是文本而不是數字,有沒有辦法將這些值保留並連接在一起而不是數字。如果我將這個應用於我的實際數據,它只是彙報連在一起的地址。謝謝 – 2015-02-05 15:28:43
@JohnLapek它聽起來像你實際上有一個數據框與因素,而不是文本 - 看到更新的問題,如何處理這種情況。通常我使用'stringsAsFactors = F'創建數據框,以避免在數據爭用期間處理因素。 – josliber 2015-02-05 15:37:31
謝謝!這個伎倆。 – 2015-02-05 15:52:48