重新排列R中多个矩阵的形状

时间:2013-02-03 21:25:48

标签: r csv dataset social-networking import-from-csv

这是一个双重的 R 问题。我有一个数据集文件夹(在.csv中),需要在分析之前进行更改。每个数据集都是1X10矩阵,如:

1 2 3 4 5 6 7 8 9 10

并且需要将其转换为在对角线上插入1s的以下5X5矩阵:

1
1 1 
2 3 1
4 5 6 1
7 8 9 10 1

如何在文件夹中的多个文件上完成此转换?

1 个答案:

答案 0 :(得分:7)

试试这个:

dir.in  <- "aaa"  # replace with your own input dir
dir.out <- "bbb"  # replace with your own output dir

files.in  <- list.files(dir.in, full.names = TRUE)
files.out <- file.path(dir.out, basename(files.in))

data.in <- lapply(files.in, scan, sep = ",")

mat.out <- lapply(data.in, function(x){ M <- diag(1, 5)
                                        M[upper.tri(M)] <- x
                                        t(M) })

mapply(write.csv, mat.out, files.out, col.names = FALSE, row.names = FALSE)