我有一个包含最低温度值的矩阵'm
'。其中一些值为负。我需要将此矩阵转换为栅格。因此,当我使用软件包raster()
中的raster
命令时,出现以下错误。请帮忙!
setValues(r,as.vector(t(x)))中的错误:值必须为数字, 整数,逻辑或因数
参考数据:
m<-structure(c("99.9", "99.9", "99.9", "99.9", "99.9", "99.9", "99.9",
"99.9", "99.9", "99.9", "99.9", "99.9", "99.9", "99.9", "99.9",
"99.9", "99.9", "99.9", "99.9", "99.9", "99.9", "99.9", "99.9",
"99.9", "99.9", "99.9", "99.9", "99.9", "99.9", "99.9", "99.9",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "12.46",
"12.92", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", " 8.86",
"99.90", "99.90", "12.32", "12.64", "12.94", "13.93", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", " 7.40", " 8.60", " 8.89", " 9.76", "11.96", "12.50",
"12.99", "13.13", "13.02", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", " 7.29", " 8.08", " 8.58",
" 9.44", "10.60", "10.84", "11.20", "12.01", "13.49", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "-0.37",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", " 4.93",
" 5.64", " 7.79", " 8.42", " 9.29", " 9.43", " 9.27", "12.10",
"12.54", "13.42", "13.61", "14.77", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "19.36", "99.90", "99.90", "99.90",
"99.90", "99.90", "-1.99", "-0.67", " 0.62", " 0.63", "99.90",
"99.90", " 4.09", " 3.79", " 5.49", " 6.73", " 7.93", " 7.81",
" 8.83", " 9.84", "11.15", "10.84", "12.85", "12.43", "13.68",
"14.56", "16.48", "16.23", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "23.27", "99.90", "99.90", "-1.45", "-0.74",
"-0.97", " 0.74", " 1.63", " 4.15", " 3.49", " 3.76", " 4.55",
" 5.76", " 6.53", " 7.78", " 8.00", " 8.67", " 9.83", "10.25",
"10.76", " 8.93", "11.38", "11.84", "14.36", "16.06", "16.04",
"15.76", "17.39", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "-0.65", "-0.78", "-0.43", "-0.76", " 2.81", " 4.70",
" 3.46", " 3.64", " 4.73", " 4.82", " 6.47", " 7.31", " 7.86",
" 8.87", " 8.61", "10.17", "10.17", "10.40", "10.01", "12.23",
"13.16", "14.25", "15.00", "16.14", "17.00", "17.69", "19.37",
"99.90", "99.90", "99.90", "99.90", "99.90", "-0.83", "-1.06",
" 0.17", " 3.11", " 3.44", " 4.90", " 4.58", " 4.94", " 4.95",
" 6.17", " 6.63", " 7.55", " 8.27", " 8.29", " 9.93", "10.95",
"10.71", "11.21", "12.49", "14.18", "14.42", "15.60", "15.77",
"14.00", "16.37", "17.46", "21.33", "21.87", "99.90", "99.90",
"99.90", "-0.86", "-2.05", "0.10", "2.20", "4.47", "5.56", "6.12",
"6.10", "5.50", "4.93", "4.71", "6.70", "7.69", "7.45", "9.45",
"11.47", "11.89", "12.26", "13.52", "14.23", "15.22", "16.42",
"15.74", "16.16", "16.83", "18.17", "21.26", "22.44", "99.90",
"99.90", "-4.57", "-2.03", "-1.31", " 0.89", " 2.17", " 4.72",
" 5.95", " 6.75", " 6.49", " 6.31", " 5.31", " 4.80", " 5.88",
" 6.95", " 7.45", " 9.75", "11.36", "11.42", "12.27", "13.22",
"14.11", "16.49", "16.96", "16.60", "16.88", "19.74", "20.96",
"20.41", "22.32", "99.90", "99.90", "99.90", "-2.68", "-0.34",
" 1.60", " 2.97", " 4.81", " 6.64", " 6.83", " 7.61", " 7.21",
" 6.28", " 5.28", " 5.62", " 5.81", " 7.09", " 8.52", "10.93",
"11.58", "12.52", "13.39", "15.22", "16.23", "18.01", "18.00",
"19.30", "21.00", "21.35", "21.75", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", " 7.51",
" 8.18", " 8.01", " 7.95", " 7.53", " 5.68", " 5.52", " 5.58",
" 7.39", " 9.35", "10.68", "11.17", "12.61", "14.15", "15.91",
"16.71", "18.30", "19.04", "19.45", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", " 8.34", " 8.28", " 7.65",
" 6.53", " 5.87", " 5.58", " 7.49", " 8.72", " 9.88", "10.53",
"13.71", "14.45", "15.99", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", " 8.32", " 8.37", " 8.00", " 6.92", " 6.42", " 8.04",
" 9.75", " 9.58", "11.70", "13.80", "14.76", "16.10", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", " 9.03", " 9.18", " 8.92",
" 8.04", " 7.44", " 8.12", " 8.73", "10.35", "12.07", "12.75",
"13.99", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
" 9.21", " 9.43", " 9.47", " 8.14", " 7.70", " 8.32", " 9.40",
"11.38", "11.76", "13.11", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", " 9.51", " 9.30", " 9.10",
" 8.72", " 9.12", "11.34", "12.02", "12.38", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
" 8.57", " 9.09", " 9.97", "10.50", "11.36", "11.92", "13.42",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", " 7.52", " 9.92", "10.26", "11.06",
"12.31", "13.50", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", " 8.30", " 8.11", " 8.21",
"10.57", "10.30", "11.91", "12.72", "13.80", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", " 8.37", " 8.98", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", " 8.54", " 9.44", "10.45",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", " 9.59",
"10.09", " 9.99", "10.56", "10.96", " 9.80", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", " 9.05", " 9.11", " 9.35", " 9.79", " 9.72",
" 9.72", "10.06", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "22.12", "22.12", "22.09",
"22.07", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", " 9.59", " 9.58",
" 9.57", " 9.80", " 9.61", " 9.86", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
" 9.62", " 9.61", " 9.37", " 9.26", " 9.61", " 9.87", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "21.73", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", " 9.63", " 9.44", " 9.86", " 9.26",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", " 9.19",
" 9.90", " 9.30", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", " 9.37", " 9.24", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90", "99.90", "99.90", "99.90",
"99.90", "99.90", "99.90", "99.90"), .Dim = c(31L, 31L), .Dimnames = list(
NULL, c("V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10",
"V11", "V12", "V13", "V14", "V15", "V16", "V17", "V18", "V19",
"V20", "V21", "V22", "V23", "V24", "V25", "V26", "V27", "V28",
"V29", "V30", "V31", "V32", "V33")))
答案 0 :(得分:2)
我认为这是因为当您将m
从文本转换为数字时,您失去了其Dimensions属性,因此它变成了向量而不是矩阵。这很容易反转:
dims <- dim(m)
m <- as.numeric(gsub(" ", "", m))
dim(m) <- dims
raster(m)
#> class : RasterLayer
#> dimensions : 31, 31, 961 (nrow, ncol, ncell)
#> resolution : 0.03225806, 0.03225806 (x, y)
#> extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
#> crs : NA
#> source : memory
#> names : layer
#> values : -4.57, 99.9 (min, max)