我有一个很大的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