Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将R中的字符转换为数字_R - Fatal编程技术网

无法将R中的字符转换为数字

无法将R中的字符转换为数字,r,R,我正在努力将R中的字符向量转换为数字。我使用以下命令从csv导入数据帧: a = read.csv('myData.csv', header=T, stringsAsFactors=F) 我的因子之一,fac1,是一个数字向量,但包含一些“na”和“nr”的实例。因此,typeof(a$fac1)返回“字符” 我创建了一个没有“na”和“nr”条目的新数据帧 然后,我尝试使用以下命令将fac1转换为数字: k$fac1_num = as.numeric(k$fac1) 问题是这不起作用,因为

我正在努力将R中的字符向量转换为数字。我使用以下命令从csv导入数据帧:

a = read.csv('myData.csv', header=T, stringsAsFactors=F)
我的因子之一,
fac1
,是一个数字向量,但包含一些“na”和“nr”的实例。因此,
typeof(a$fac1)
返回
“字符”

我创建了一个没有“na”和“nr”条目的新数据帧

然后,我尝试使用以下命令将
fac1
转换为数字:

k$fac1_num = as.numeric(k$fac1)
问题是这不起作用,因为
typeof(k$fac1_num)
现在返回
“double”
,而不是
“numeric”


有人能提出解决办法/指出我做错了什么吗?提前谢谢

尝试强制使用数字:

a = read.csv('myData.csv', header=T, stringsAsFactors=F)
a$fac1_num = as.numeric(a$fac1)
如果您需要子集(这通常是不需要的,我建议不要经常这样做,因为知道其他列值告诉您数据背后的“现实”可能有价值),那么只需:

k <- a[ !is.na(a$fac1_num) , ]

k尝试在模式下使用sapply

sapply(your_df, mode)

我认为你做的一切都对,只是R关于类型的术语有点…复杂,有时
typeof
从不返回
numeric
。与
class()
(请务必阅读这两个函数的文档!)的结果进行比较。啊,这消除了很多混淆!我认为对我的数据进行子设置也会导致一个问题-因此,在使用
typeof
时,使用as.numeric而不使用任何子设置(如下面的答案所示)仍然返回
字符
,但
class
返回的是
数值
。谢谢
sapply(your_df, mode)