我有一个7 × 31的字符矩阵,名为extra4
,其结构如下所示:
> str(extra4)
chr [1:7, 1:31] "36.88 " " 45.48 " " 52.46 " " 111.31 " " 138.45 " " 121.09 " " 122.62" ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:7] "1990" "1991" "1992" "1993" ...
..$ : chr [1:31] "1" "2" "3" "4" ...
在阅读了类似的问题后,我尝试了以下方法,但失败了:
>matrix(as.numeric(unlist(extra4)),nrow=nrow(extra4))
Warning message:
In matrix(as.numeric(unlist(extra4)), nrow = nrow(extra4)) :
NAs introduced by coercion
我也试过
> class(extra4)<-"numeric"
Warning message:
In class(extra4) <- "numeric" : NAs introduced by coercion
> extra4<-apply(extra4, 1, as.numeric)
Warning messages:
1: In apply(extra4, 1, as.numeric) : NAs introduced by coercion
2: In apply(extra4, 1, as.numeric) : NAs introduced by coercion
3: In apply(extra4, 1, as.numeric) : NAs introduced by coercion
4: In apply(extra4, 1, as.numeric) : NAs introduced by coercion
5: In apply(extra4, 1, as.numeric) : NAs introduced by coercion
6: In apply(extra4, 1, as.numeric) : NAs introduced by coercion
7: In apply(extra4, 1, as.numeric) : NAs introduced by coercion
> extra4<-apply(extra4, 2, as.numeric)
There were 31 warnings (use warnings() to see them)
我还尝试将矩阵更改为 Dataframe ,然后执行sapply(extra4, as.numeric)
,但这也不起作用,我还尝试将数据写入csv,但不知何故,输出结果包含非数字字符。
这很奇怪,因为特别是在做了上面的事情之后,只有一些数字变成了数值。然而,我确信所有的元素都是字符,因为当我比较那些保存的和那些没有保存的,我得到
> str(extra4[1,1])
chr "36.88 "
> str(extra4[1,2])
chr " 19.11 "
我还添加了以下内容以更详细地显示我的数据:
extra4 <- matrix(
c(
"36.88 ", " 45.48 ", " 52.46 ", " 111.31 ", " 138.45 ",
" 121.09 ", " 122.62", " 19.11 ", " 27.97 ", " 37.14 ", " 47.68 ",
" 60.78 ", " 35.84 ", " 38.64", " 56.21 ", " 74.94 ", " 92.3 ",
" 118.62 ", " 138.13 ", " 104.65 ", " 113.98", " 30.48 ", " 51.54 ",
" 61.57 ", " 99.87 ", " 80.9 ", " 84.97 ", " 99.34", "20.16 ",
" 24.76 ", " 27.76 ", " 37.53 ", " 50.53 ", " 28.8 ", " 25.06",
" 87.73 ", " 98.68 ", " 119.95 ", " 150.74 ", " 214.35 ", " 118.5 ",
" 129.19", " 32.36 ", " 36.52 ", " 42.67 ", " 56.55 ", " 89.22 ",
" 49.97 ", " 50.62", "35.09 ", " 40.77 ", " 48.43 ", " 82.61 ",
" 120.1 ", " 72.43 ", " 76.69", " 47.21 ", " 67.25 ", " 78.62 ",
" 66.64 ", " 83.78 ", " 127.79 ", " 154.11", " 86.1 ", " 127.59 ",
" 164.43 ", " 249.32 ", " 312.01 ", " 272.09 ", " 265.68", " 83.75 ",
" 118.41 ", " 171.52 ", " 229.27 ", " 241.63 ", " 201 ", " 213.01",
" 36.63 ", " 52.1 ", " 66.03 ", " 101.38 ", " 126.71 ", " 95.46 ",
" 110.03", " 57.5 ", " 75.72 ", " 101.31 ", " 147.5 ", " 171.01 ",
" 148.66 ", " 167.93", " 29.56 ", " 38.37 ", " 48.8 ", " 65.5 ",
" 84.77 ", " 75.2 ", " 81.27", " 77.28 ", " 93.7 ", " 119.62 ",
" 247 ", " 301.76 ", " 222.52 ", " 244.46", " 45.6 ", " 54.32 ",
" 87.81 ", " 132.93 ", " 163.62 ", " 152.99 ", " 170.85", " 27.13 ",
" 36.96 ", " 48.94 ", " 80.01 ", " 124.07 ", " 93.49 ", " 105.57",
" 54.55 ", " 85.93 ", " 102.3 ", " 122.7 ", " 168.36 ", " 151.79 ",
" 169.65", " 86.19 ", " 121.82 ", " 191.7 ", " 247.75 ", " 260.23 ",
" 196.48 ", " 243.06", "47.35 ", " 60.63 ", " 76.4 ", " 93.04 ",
" 102.13 ", " 98.29 ", " 86.27", " 10.93 ", " 13.33 ", " 16.82 ",
" 18.2 ", " 23.48 ", " 16.52 ", " 16.19", " NA ", " NA ",
" NA ", " NA ", " 69.46 ", " 54.22 ", " 60.16", " 60.93 ",
" 89.86 ", " 141.85 ", " 207.9 ", " 182.79 ", " 159.1 ", " 159.46",
" 15.37 ", " 18.48 ", " 24.33 ", " 38.37 ", " 45.87 ", " 34.86 ",
" 31.96", " 34.05 ", " 40.1 ", " 55.02 ", " 58.31 ", " 86.89 ",
" 65.68 ", " 65.68", "1.51 ", " 0.93 ", " 1 ", " 1.78 ",
" 2.8 ", " 1.56 ", " 1.41", " 27.15 ", " 31.37 ", " 39.46 ",
" 40.33 ", " 61.86 ", " 45.18 ", " 57.71", " 14.74 ", " 16.3 ",
" 25.06 ", " 31.74 ", " 37.39 ", " 27.18 ", " 30.49", " 3.59 ",
" 4.86 ", " 5.67 ", " 6.36 ", " 7.6 ", " 4.8 ", " 5.5",
"4.73 ", " 5.68 ", " 7.3 ", " 8.53 ", " 11.03 ", " 8.44 ",
" 9.84", "16.76 ", " 24.83 ", " 32.66 ", " 46.22 ", " 48.01 ",
" 43.44 ", " 48.29"
),
nrow = 7L,
ncol = 31L,
dimnames = list(
c("1990", "1991", "1992", "1993", "1994", "1995", "1996"),
c(
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23",
"24", "25", "26", "27", "28", "29", "30", "31"
)
)
)
sessionInfo()
给出以下结果:
> sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] gdata_2.13.2
loaded via a namespace (and not attached):
[1] gtools_2.7.1 tools_3.0.0
5条答案
按热度按时间polhcujo1#
这里没有真正的问题,我试过的大多数选择都没有。你得到了Warnings,但这些都是
"NA"
字符串,因为它们不是NA
,也不是存储在字符串中的数字,R不知道如何处理它们,并将它们更改为NA
。这就是所有的警告告诉你。因此extra4
第22列中的所有工作和所有警告“NA”值(或其变体):但这些只是警告,在这种情况下可以忽略。如果他们给您带来麻烦,您可以将呼叫打包到
suppressWarnings()
中。但这是危险的,因为它将停止所有警告,而不仅仅是关于
NA
s的警告。5q4ezhmt2#
0mkxixxg3#
我想你可以直接申请:
更多信息:https://stat.ethz.ch/R-manual/R-devel/library/base/html/data.matrix.html
xsuvu9jc4#
如果你有一个字符矩阵m,即
简单地Map为.numeric,即
并且使用该数据来重构具有与原始m矩阵相同维度的矩阵,即
yhived7q5#
最简单的R基方法是: