r - 如何在 R 中有效转置矩阵?

标签 r matrix transpose memory-efficient

我有一个大矩阵,我想对其进行转置,而不必将其放入内存中。我可以想到三种方法来实现这一目标:

  1. 将原始矩阵逐列写入 .txt 文件。随后,使用readLines(...)将其逐行读入内存,并按顺序将这些行写入新文件。这种方法的问题是我不知道如何按列而不是按行附加到 .txt 文件。
  2. 从 .txt 文件中逐列读取矩阵,然后逐行将这些列写入新文件。我已使用 scan(pipe("cut -f1 filename.txt")) 尝试过此操作,但此操作在每次迭代时都会打开一个单独的连接,因此由于相关的开销,需要很长时间才能完成打开和关闭这些连接。
  3. 使用一些未知的 R 函数来完成任务。

我在这里缺少什么吗?我需要使用单独的程序来执行此操作吗?预先感谢您的帮助!

最佳答案

有很多语言在这类事情上做得更好。如果您确实想使用 R,则必须一次读取一行文件,从所需的列中取出一个元素,将其存储在向量中,然后将该向量写入一行。并对每一列执行此操作。

Columns = 1e9
Rows = 1e6

FileName = "YourFile.csv"
NewFile = "NewFileName"

for(i in 1:Columns)
{
    ColumnToBeRow = vector("numeric", Columns)
    for(j in 1:Rows)
    {
        ColumnToBeRow[j] = read.csv(FileName, nrows=1, skip=(j - 1), header=F)
    }
    write.csv(ColumnToBeRow, NewFile, append=TRUE)
}

关于r - 如何在 R 中有效转置矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25331830/

相关文章:

mysql - SQL 查询识别不相等的值并以转置格式呈现

r - 将变量与其中许多数据包含在 R 中的行中的变量连接起来

c - 矩阵段错误

c - C 上的返回矩阵

python - 减少输入矩阵系数所需的时间

python - 如何使用 pandas 旋转数据框,使可变列变成行?

sql - 使用 SQL 获取表的 "transpose"

r - 如何使用带有 facebook API 的 httr 包中的 oauth2.0_token 函数?

r - 在 pdf 中组合矢量和位图图形

r - R中颜色的顺序