gpt4 book ai didi

r - 如何将数据列表保存到 R 中的文本文件?

转载 作者:行者123 更新时间:2023-12-02 15:27:45 25 4
gpt4 key购买 nike

我有一个 R 对象,它实际上是一个列表

> str(snpset)
List of 16
$ chr1 : int [1:80] 2 6 7 8 11 13 16 17 18 21 ...
$ chr2 : int [1:78] 146 148 150 151 152 153 155 156 158 159 ...
$ chr3 : int [1:55] 276 279 281 284 289 295 298 301 304 306 ...
$ chr4 : int [1:66] 404 406 407 408 410 411 412 414 415 416 ...
$ chr5 : int [1:42] 505 506 508 509 511 514 515 516 518 521 ...
$ chr6 : int [1:38] 589 591 592 593 594 595 600 601 603 604 ...
$ chr7 : int [1:78] 660 663 664 665 666 671 673 677 679 681 ...
$ chr8 : int [1:69] 846 847 849 851 854 855 858 862 863 864 ...
$ chr9 : int [1:48] 968 969 970 971 972 974 980 981 982 983 ...
$ chr10: int [1:49] 1063 1066 1068 1069 1071 1072 1076 1077 1082 1083 ...
$ chr11: int [1:84] 1159 1160 1161 1162 1163 1164 1166 1169 1170 1172 ...
$ chr12: int [1:81] 1311 1313 1314 1315 1317 1318 1321 1323 1324 1326 ...
$ chr13: int [1:51] 1460 1461 1462 1464 1465 1466 1468 1469 1471 1472 ...
$ chr14: int [1:47] 1544 1546 1547 1548 1551 1552 1557 1559 1563 1564 ...
$ chr15: int [1:55] 1650 1651 1653 1654 1655 1657 1658 1659 1660 1661 ...
$ chr16: int [1:37] 1756 1757 1759 1761 1762 1763 1764 1767 1769 1770 ...

如何将“snpset”对象中的所有数据保存为文本文件?

我尝试了以下方法:

write.table(snpset,file="test",sep=" ", row.names=TRUE)

但是出现了这个错误:

Error in data.frame(chr1 = c(2L, 6L, 7L, 8L, 11L, 13L, 16L, 17L, 18L, :
arguments imply differing number of rows: 80, 78, 55, 66, 42, 38, 69, 48,
49, 84, 81, 51, 47, 37 –

最佳答案

write.csv(以及整个 write. 函数系列)接受数据帧和矩阵,以及可以转换为这些类型结构的对象。列表不是它们的一部分(因为它们不是矩形的,这是一个简短的简单答案)——因此出现错误消息。根据您想要执行的操作,这里有两种解决方案(以及许多其他可能的解决方案)。

  1. 如果您只需要数据本身,用空格分隔,有或没有行号,cat 就足够了:

    for(i in seq_along(snpset))
    cat(paste0(i,"."), snpset[[i]], "\n", file = "somefile.txt", append = TRUE)

    如果不需要行号,只需删除 paste0(i,"."),

    文件内容(使用随机数据)

    1. 64 44 31 70 78 99 100 88 79 58 
    2. 43 155 105 151 190 177 192 108 168 110
    3. 204 227 131 51 113 261 67 187 272 100 131 78 45
    4. 45 259 400 64 127 70 186 213 197 101 220
    5. 404 396 89 215 421 262 457 64 184 150 360 165 481 498 378
    (...)
  2. 要获得整个对象的文本表示,您可以轻松地将其重新读入 R,dput 是一个不错的选择:

    dput(snpset, "someOtherFile.txt")

    然后将其返回到 R 中,您可以这样做

    snpset <- source("someOtherFile.txt")$value

    文件内容

    list(c(64L, 44L, 31L, 70L, 78L, 99L, 100L, 88L, 79L, 58L), c(43L, 
    155L, 105L, 151L, 190L, 177L, 192L, 108L, 168L, 110L), c(204L,
    227L, 131L, 51L, 113L, 261L, 67L, 187L, 272L, 100L, 131L, 78L,
    (...)

生成的数据

snpset <- list()
for(i in 1:10) {
snpset[[i]] <- sample(c((i*10):(i*100)),size = sample(10:15, size = 1), replace=TRUE)
}

关于r - 如何将数据列表保存到 R 中的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29505359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com