在 R 中重新排列 table
Re-arrange a table in R
我正在用 R 读取一个 .dat 文件,它有 10,800 行和 6 列(如果你想看一下,我会把 link to the file 留给你)
为了阅读它,我使用了这个:
library(dplyr)
library(readr)
tryon <- read.table("F:/1981_01_NAM.dat", header=FALSE)
一旦我有了那个 table 我想重新安排它制作一个有 360 行和 180 列的数组或矩阵。
例如我有这个:
[1] [2] [3]
[1]1 2 3
[2]4 5 6
[3]7 8 9
我想要这个:
[1] [2] [3] [4] [5] [6]
[1]1 2 3 4 5 6
[3]7 8 9 ...
所以按照我使用的一些例子:
lon = 360
lat = 180
output2 <- matrix(unlist(tryon), nrow = lon, ncol= lat, byrow = TRUE)
但它并没有达到我想要的效果,如果你使用我上面链接的数据,重新排列后 [1,35] 位置的值应该是 -0.00367983,但我得到的是 0.
有什么想法吗?谢谢。
如果您只是尝试使用 unlist(tyron)
,您会发现它什么也没做,因为矩阵不是列表。所以你必须把它变成一个列表,然后 unlist
它有效地将它变成一个向量。 然后可以用矩阵函数把它转回矩阵
is.list(mat)
FALSE
尝试:
output2 <- matrix(unlist(as.list(tyron)), nrow = lon, ncol = lat, byrow = TRUE)
我正在用 R 读取一个 .dat 文件,它有 10,800 行和 6 列(如果你想看一下,我会把 link to the file 留给你)
为了阅读它,我使用了这个:
library(dplyr)
library(readr)
tryon <- read.table("F:/1981_01_NAM.dat", header=FALSE)
一旦我有了那个 table 我想重新安排它制作一个有 360 行和 180 列的数组或矩阵。 例如我有这个:
[1] [2] [3]
[1]1 2 3
[2]4 5 6
[3]7 8 9
我想要这个:
[1] [2] [3] [4] [5] [6]
[1]1 2 3 4 5 6
[3]7 8 9 ...
所以按照我使用的一些例子:
lon = 360
lat = 180
output2 <- matrix(unlist(tryon), nrow = lon, ncol= lat, byrow = TRUE)
但它并没有达到我想要的效果,如果你使用我上面链接的数据,重新排列后 [1,35] 位置的值应该是 -0.00367983,但我得到的是 0.
有什么想法吗?谢谢。
如果您只是尝试使用 unlist(tyron)
,您会发现它什么也没做,因为矩阵不是列表。所以你必须把它变成一个列表,然后 unlist
它有效地将它变成一个向量。 然后可以用矩阵函数把它转回矩阵
is.list(mat)
FALSE
尝试:
output2 <- matrix(unlist(as.list(tyron)), nrow = lon, ncol = lat, byrow = TRUE)