R 从数据表中读取得到的是一个因子,而不是一个双精度因子

R 从数据表中读取得到的是一个因子,而不是一个双精度因子,r,R,我不确定我是否提供了足够的信息,但如果我没有,请告诉我 我从一个CSV文件中加载了一个数据帧,其中包含整数列和带双精度的列c。我们将此数据帧称为tb 现在我想从数据表tb中提取特定的double。但是,当我输入以下内容时 print(tb[4,][['c']]); 它给了我一个这样的回答 [1] 790.000000000001 92 Levels: -730.33000000000001 -290.0 -912.47 -37.8000000000000089 -291.78000000000

我不确定我是否提供了足够的信息,但如果我没有,请告诉我

我从一个CSV文件中加载了一个数据帧,其中包含整数列和带双精度的列
c
。我们将此数据帧称为tb

现在我想从数据表
tb
中提取特定的double。但是,当我输入以下内容时

print(tb[4,][['c']]);
它给了我一个这样的回答

[1] 790.000000000001
92 Levels: -730.33000000000001 -290.0 -912.47 -37.8000000000000089 -291.780000000000002     
... null
我尝试了一些不同的方法,比如只获取行并打印它。没有问题。但是,在环境中,它使用类似于
因子w/92 levels

我一直在网上查看资源,但没有结果。不确定这是否是我自己机器上的异常行为

更新 我使用的
read.csv
如下:

tb <- read.csv(file="test_3.csv", head=TRUE, sep=",");
a,b,c,d
1,170,771.8,1170.0
1,1,1.87,76.0
1,76,345.04,0.0
1,102,463.08,566.0
4,188,1530.3200000000002,3548.0000000000005
后记 我的csv文件有这样的行 4188,空,3548.0000000000005


因此,读取该文件会产生问题。在
read.csv
中使用
na.strings=(“null”)
命令非常有效。

听起来该列中有一个非数值。你可以用它找到它

tb$d[is.null(as.numeric(as.character(tb$d))]
如果它类似于“null”,您可以使用
na.strings
参数将这些值自动转换为R中正确的缺失值

read.csv(..., na.strings="null")

当您读取数据时。

您使用的是
read.csv2
还是
read.csv
read.csv
。我更新了问题。所以另外请提供几行csv。文件顺便说一句,你可以做
tb[4],当然,我用几行csv@bryansis2010这个样本真的再现了你的问题吗?如果听起来该列中至少有一个非数字值。当您输入
tb$d[is.null(as.numeric(as.character(tb$d))]时,是否出现任何问题