我是R的新手并尝试从数据框中提取特定元素并将其与整数进行比较。
我在文本文件中保存了一个表。
我使用以下内容来阅读表格。
mydata = read.table("file.txt");
在我的情况下,我想比较一个元素,比如说USERPOR的第一个元素(1.0)和一个整数1.0(所以比较应该返回true)。
我写的代码是
mydata[[2,7]]
[1] 1.000
Levels: 1.000 10.0000 2.000 3.000 4.00 5.00 6.000 7.000 8.000 9.000 USERPROR
然而,当我比较它们时,我得到了'假'。谁能告诉为什么会这样呢?
> mydata[[2,7]]==1.0
[1] FALSE
答案 0 :(得分:2)
Hmmmm。首先,通常使用单个括号访问data.frame的元素 - 如mydata[2,7]
。双括号将访问一列,例如mydata[[2]]
将返回第二列。因此,mydata[[7]][2]
与mydata[2,7]
相同。
其次,由于您的输出包含Levels:
列表,因此该变量似乎存储为级别为"1.000"
,"10.0000"
,... "USERPROR"
的因子(奇怪的是,我猜测数据输入不正确)。因此,我相信在您的示例中,mydata[2,7] == "1.000"
会返回TRUE
。
一般情况下,如果您想将数值与整数进行比较,请不要使用1.0
之类的比较值,因为.0
部分强制将其存储为浮点数 - 点,不是整数。如果数据存储为浮点数,则可能有足够的舍入值,计算为1.0
的数字不等于整数1
。测试它的可靠方法是使用round(mydata[2,7]) == 1
。