问题描述
我的文件中发生了不可思议的异常。一些值正在消失,但行数却相同。某些值仍在矩阵中,所以我不明白。
# Data : meps >> https://github.com/JMcrocs/MEPVote/raw/master/meps.rds
> str(meps)
'data.frame': 784 obs. of 2338 variables:
$ mepid: num 197701 197533 197521 187917 124986 ...
$ EPG : chr "GUE.NGL" "GUE.NGL" "GUE.NGL" "GUE.NGL" ...
> mepsMatrix <- as.matrix(meps)
> str(mepsMatrix)
chr [1:784,1:2338] "197701" "197533" "197521" "187917" "124986" "197529" "197468" " 96706" " 88715" "197416" ...
- attr(*,"dimnames")=List of 2
..$ : chr [1:784] "197701" "197533" "197521" "187917" ...
..$ : chr [1:2338] "mepid" "EPG" "1" "2" ...
> nrow(meps)
[1] 784
> nrow(mepsMatrix)
[1] 784
> 28229 %in% meps[,'mepid']
[1] TRUE
> 28229 %in% mepsMatrix[,'mepid']
[1] FALSE
最奇怪的部分是我可以使用RStudio查看器找到它。
有人可以帮我吗?我将不胜感激!
解决方法
看看这个最小的例子:
df <- data.frame(a = c(2,20),b = c("a","b"))
m <- as.matrix(df)
2 %in% df[,"a"]
#> TRUE
2 %in% m[,"a"]
#> FALSE
" 2" %in% m[,"a"]
#> TRUE
2 %in% trimws(m[,"a"])
#> TRUE
m
#> a b
#> [1,] " 2" "a"
#> [2,] "20" "b"
显然,as.matrix
会在转换为字符时强制执行相同的填充以保持相同的字符串长度。