将列表中的项目导出到单个.csv文件R.

时间:2016-01-19 01:25:26

标签: r

我有一个列表,其中包含我想要导出为单个.csv文件的向量,其中包含所有向量作为命名列。

例如,如果我有四个向量,其中包含来自四个模型的假设聚类分析中的十个项目,这四个模型包含由

创建的可变数字数据点
veglist=list.files(pattern="TXT") #create list of files
veg=lapply(veglist,read.csv,header=T,row.names=1) #read list of files
vegbc=lapply(veg,vegdist,method="bray") #create dissimilarity matrix from each file
av=lapply(vegbc,agnes,method="average") #do clustering analysis with each dissimilarity mat
av2=lapply(av,cutree,k=2) #cut the hierarchical analysis at 2 groups level

当我输入修复(av2)时,我会看到:

list(c(1,1,1,1,1,1,2,2,2,2,2,2),c(1,1,1,1,1,2,2,2,2,2),c(1,1,1,2,1,2,2,2,2,2),c(1,1,1,1,2,1,2,2,2,2,2,2,2))

如果我输入av2,我会看到

[[1]]
[1] 1 1 1 1 1 1 2 2 2 2 2 2 

[[2]]
[1] 1 1 1 1 1 2 2 2 2 2 

[[3]]
[1] 1 1 1 2 1 2 2 2 2 2 

[[4]]
[1] 1 1 1 1 2 1 2 2 2 2 2 2 2

我尝试过这个例子How to read every .csv file in R and export them into single large file。这没用。

我认为潜在的问题是我的矢量大小不同。我想要做的是将向量输出到一个看起来像这样的表:

a b c d
1 1 1 1
1 1 1 1
1 1 1 1
1 1 2 1
1 1 1 1
1 2 2 2
2 2 2 2
2 2 2 2
2 2 2 2
2     2
2     2
      2

其中a,b,c,d代替我的实际名字。最好看起来比这更漂亮,但我可以使用它。

我为这个很长的问题道歉,但我试图提供一个足够的例子。如果这个答案非常容易,我也很抱歉,但我对R还不是很好。先谢谢你。

3 个答案:

答案 0 :(得分:2)

这是您可以采取的一种方式:

l <- list(c(1,1,1,1,1,1,2,2,2,2,2,2),c(1,1,1,1,1,2,2,2,2,2),c(1,1,1,2,1,2,2,2,2,2),c(1,1,1,1,2,1,2,2,2,2,2,2,2))
maxlength <- max(sapply(l, length))
df <- data.frame(sapply(l, function(x) c(x, rep(NA, (maxlength - length(x))))))
df

   X1 X2 X3 X4
1   1  1  1  1
2   1  1  1  1
3   1  1  1  1
4   1  1  2  1
5   1  1  1  2
6   1  2  2  1
7   2  2  2  2
8   2  2  2  2
9   2  2  2  2
10  2  2  2  2
11  2 NA NA  2
12  2 NA NA  2
13 NA NA NA  2

答案 1 :(得分:1)

您首先需要将每个向量扩展到最大长度为向量的长度,然后您可以write.csv将它们放在一起,以便> maxlength <- max(sapply(l, length)) > mat <- cbind(sapply(l, `length<-`, maxlength)) > mat [,1] [,2] [,3] [,4] [1,] 1 1 1 1 [2,] 1 1 1 1 [3,] 1 1 1 1 [4,] 1 1 2 1 [5,] 1 1 1 2 [6,] 1 2 2 1 [7,] 2 2 2 2 [8,] 2 2 2 2 [9,] 2 2 2 2 [10,] 2 2 2 2 [11,] 2 NA NA 2 [12,] 2 NA NA 2 [13,] NA NA NA 2 > write.csv(mat, file="mycsv.csv") 将它们作为&#34;列&#发送出去34;:

"","V1","V2","V3","V4"
"1",1,1,1,1
"2",1,1,1,1
"3",1,1,1,1
"4",1,1,2,1
"5",1,1,1,2
"6",1,2,2,1
"7",2,2,2,2
"8",2,2,2,2
"9",2,2,2,2
"10",2,2,2,2
"11",2,NA,NA,2
"12",2,NA,NA,2
"13",NA,NA,NA,2

在文本编辑器中看起来像这样(并且可以正确导入Excel。):

(function() {
angular.module('testProvider').provider('TestProvider', TestProvider);
function TestProvider() {
    var foo = {
        'bar' : '123456',
    };
    return {
        setFoo: function(foo_data) {
            angular.extend(foo, foo_data);
        },
        $get: function() {
            return foo;
        }
    };
}

答案 2 :(得分:0)

可以使用stri_list2matrix

中的stringi来完成此操作
library(stringi)
m1 <- stri_list2matrix(l)
mode(m1) <- "integer"
m1
#      [,1] [,2] [,3] [,4]
# [1,]    1    1    1    1
# [2,]    1    1    1    1
# [3,]    1    1    1    1
# [4,]    1    1    2    1
# [5,]    1    1    1    2
# [6,]    1    2    2    1
# [7,]    2    2    2    2
# [8,]    2    2    2    2
# [9,]    2    2    2    2
#[10,]    2    2    2    2
#[11,]    2   NA   NA    2
#[12,]    2   NA   NA    2
#[13,]   NA   NA   NA    2