从R中的数据帧中提取元素的值
我对R非常陌生,尝试从数据帧中提取特定元素,并将其与整数进行比较 我在文本文件中保存了一个表 我用下面的句子来阅读表格从R中的数据帧中提取元素的值,r,R,我对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
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
嗯。首先,data.frame的元素通常使用单括号访问——比如
mydata[2,7]
。双括号将访问一列,例如,mydata[[2]]
将返回第二列。因此,mydata[[7]][2]
与mydata[2,7]
相同
其次,由于您的输出包含一个级别:
列表,因此该变量似乎存储为级别为“1.000”
,“10.0000”
<代码>“USERPROR”(奇怪到我猜数据输入不正确)。因此,我相信在您的示例中,mydata[2,7]==“1.000”
将返回TRUE
通常,如果要将数值与整数进行比较,请不要使用类似于
1.0
的比较值,因为thje.0
部分强制将其存储为浮点,而不是整数。如果数据以浮点形式存储,则可能存在足够的舍入,使得计算为1.0
的数字不完全等于整数1
。测试它的可靠方法是使用round(mydata[2,7])==1
我尝试了round(mydata[2,7])==1。它给了我以下的错误。数学错误。因子(1L):四舍五入对因子没有意义。请看我编辑的问题。对。这是因为这里有一个因子,就像我前面说的,不是浮点值。我重复一遍,我认为您的第一个问题是数据存储不正确。首先把数据放在那里,否则,它就是垃圾输入,垃圾输出。问题是。使用read.table
读取数据,但包含参数header=TRUE
。变量名似乎包含在数据中。是“header=true”修复了该问题。因此,实际的问题是读取数据的方式。非常感谢你!我真的花了好几个小时在这上面。很好。我不知道为什么他们在read.table
中默认设置为header=FALSE
,但他们做到了。