as.numeric 对于列中的某些值无明显原因返回 NA

Yuv*_*ris 6 r na

当尝试使用 as.numeric 将一列字符(数字字符串,例如“0.1234”)转换为数字时,某些值会返回NA警告“强制转换引入的 NA”。作为 s 返回的字符NA似乎与正确作为数字返回的字符没有任何不同。有谁知道可能是什么问题?

\n\n

已经尝试查找任何可以隐藏在某些值中的非数字字符(如 \',\')。我确实找到了包含“-”(例如“-0.123”)的字符串确实变成了NAs,但这些只是变成了NAs的字符串的一部分。另外,尝试寻找字符串内的空格。这似乎也不是问题。

\n\n
data$y\n [1] "0.833250539"  "0.820323535"  "0.462284612"  "0.792943985"  "0.860587952"  "0.729665177"  "0.461503956"  "0.625871118" \n [9] "0.740999346"  "0.962727964"  "0.971089266"  "0.869004848"  "0.828651766"  "0.900648732"  "0.970326033"  "0.898123286" \n[17] "0.911640765"  "0.902442126"  "0.843392097"  "0.763421844"  "0.892426243"  "0.380433624"  "0.925017633"  "0.725470821" \n[25] "0.699924767"  "0.689061225"  "0.907462936"  "0.888064239"  "0.913547115"  "-\xe2\x80\xac0.625103904\xe2\x80\xad" "0.897385961"  "0.889727462" \n[33] "0.90127339"   "0.947012474"  "0.948883588"  "0.845845512"  "0.97866966"   "0.796247738"  "0.864627056"  "0.266656189\xe2\x80\xad" \n[41] "0.894915463"  "0.969690678"  "0.771365656\xe2\x80\xad"  "0.88304436"   "0.954039006"  "0.836952199"  "0.731558669\xe2\x80\xad"  "0.907224294" \n[49] "0.622059127"  "0.887742343"  "0.917550343"  "0.97240334\xe2\x80\xad"   "0.902841957"  "0.617403052"  "0.82926708"   "0.674903846" \n[57] "0.947132958"  "0.929213613\xe2\x80\xad"  "-\xe2\x80\xac0.297844476" "0.871767367"\n\ny = as.numeric(data$y)\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

警告消息:\n 强制引入的 NA

\n
\n\n
y\n [1] 0.8332505 0.8203235 0.4622846 0.7929440 0.8605880 0.7296652 0.4615040 0.6258711 0.7409993 0.9627280 0.9710893 0.8690048 0.8286518\n[14] 0.9006487 0.9703260 0.8981233 0.9116408 0.9024421 0.8433921 0.7634218 0.8924262 0.3804336 0.9250176 0.7254708 0.6999248 0.6890612\n[27] 0.9074629 0.8880642 0.9135471        NA 0.8973860 0.8897275 0.9012734 0.9470125 0.9488836 0.8458455 0.9786697 0.7962477 0.8646271\n[40]        NA 0.8949155 0.9696907        NA 0.8830444 0.9540390 0.8369522        NA 0.9072243 0.6220591 0.8877423 0.9175503        NA\n[53] 0.9028420 0.6174031 0.8292671 0.6749038 0.9471330        NA        NA 0.8717674\n
Run Code Online (Sandbox Code Playgroud)\n

blu*_*luk 2

您的字符串包含一些非 unicode 字符。如果您确定删除它们是安全的,请使用

as.numeric(iconv(data$y, 'utf-8', 'ascii', sub=''))
Run Code Online (Sandbox Code Playgroud)

转换参考