R并附加到数据框

时间:2013-07-21 23:01:57

标签: r

我有一些交叉相关函数crosscor,我想遍历我的数据矩阵中每个列的函数。该函数输出一些互相关,每次运行时看起来都像这样:

     Lags Cross.Correlation     P.value
     1     0     -0.0006844958 0.993233547
     2     1      0.1021006478 0.204691627
     3     2      0.0976746274 0.226628526
     4     3      0.1150337867 0.155426784
     5     4      0.1943150900 0.016092041
     6     5      0.2360415470 0.003416147
     7     6      0.1855274375 0.022566685
     8     7      0.0800646242 0.330081900
     9     8      0.1111071269 0.177338885
     10    9      0.0689602574 0.404948252
     11   10     -0.0097332533 0.906856279
     12   11      0.0146241719 0.860926388
     13   12      0.0862549791 0.302268025
     14   13      0.1283308019 0.125302070
     15   14      0.0909537922 0.279988895
     16   15      0.0628012627 0.457795228
     17   16      0.1669241304 0.047886605
     18   17      0.2019811994 0.016703619
     19   18      0.1440124960 0.090764520
     20   19      0.1104842808 0.197035340
     21   20      0.1247428178 0.146396407

我想把所有列表放在一起,这样它们就在数据框中,最终将它导出到csv文件中,所以列如下:lags.3,cross-correlation.3,p-value.3 ,滞后.3,互相关.2 ....等。直到p.value.50。

我尝试过如下使用do.call,但没有成功:

    for(i in 3:50)
    {
        l1<-crosscor(data[,2], data[,i], lagmax=20)
        ccdata<-do.call(rbind, l1)
        cat("Data row", i)
    }

我也试过直接创建数据框,但我只是得到了滞后列名:

    ccdata <- data.frame()
    for(i in 3:50)
    {
        ccdata[i-2:i+1]<-crosscor(data[,2], data[,i], lagmax=20)
        cat("Data row", i)
    }

我做错了什么?或者是否有我可以访问的数据集的在线资源,以了解如何执行此操作?最好,

1 个答案:

答案 0 :(得分:0)

data.frames有一个转置方法。如果“crosscor”是对象的名称,请尝试以下方法:

 tcrosscor <- t(crosscor)
 write.csv(tcrosscor, file="my_crosscor_1.csv")

第一行是Lag的;第二排,Cross.Correlation的; P.value的第三行。我想你可以进一步“扁平”它,因此它将完全“水平”或“宽”。看起来很痛苦,但这可能类似于:

 single_line <- as.data.frame(unlist(tcrosscor))
 names(single_line) <- paste("Lag", 'Cross.Correlation', 'P.value'), rep(1:50, 3), sep=".")
 write.csv(single_line, file="my_single_1.csv")