R哪个语句没有正确选择字符串

R哪个语句没有正确选择字符串,r,data.table,R,Data.table,我试着把矩阵分解成特定的行。这个问题最好通过以下输出进行解释: Browse[2]> structure[which(structure$atom == "CA"),] recordName serial atom 1: ATOM 2 CA 2: ATOM 10 CA 3: ATOM 18 CA 4: ATOM 24 CA 5: ATOM

我试着把矩阵分解成特定的行。这个问题最好通过以下输出进行解释:

Browse[2]> structure[which(structure$atom == "CA"),]

     recordName serial atom 
  1:       ATOM      2   CA 
  2:       ATOM     10   CA 
  3:       ATOM     18   CA 
  4:       ATOM     24   CA 
  5:       ATOM     31   CA 
 ---                        
572:       ATOM   4353   CA 
573:       ATOM   4358   CA 
574:       ATOM   4368   CA 
575:       ATOM   4377   CA 
576:       ATOM   4389   CA 

Browse[2]> structure[which(structure$atom == atom),]

      recordName serial atom 
   1:       ATOM      1    N 
   2:       ATOM      2   CA 
   3:       ATOM      3    C 
   4:       ATOM      4    O 
   5:       ATOM      5   CB 
  ---                        
4392:       ATOM   4394  ND1 
4393:       ATOM   4395  CD2 
4394:       ATOM   4396  CE1 
4395:       ATOM   4397  NE2 
4396:       ATOM   4398  OXT 

Browse[2]> atom
[1] "CA"
我的问题是,为什么当我输入atom而不是CA时,我会得到不同的行选择。如您所见,变量本身等于“CA”


谢谢你的帮助

data.table
首先计算表环境中的名称,即列

例如:

> x <- data.table(a=1:5, b=11:15)
> x[a==1]
   a  b
1: 1 11
> a <- 1
> x[x$a==a]
   a  b
1: 1 11
2: 2 12
3: 3 13
4: 4 14
5: 5 15
>x[a==1]
a b
1: 1 11
>a x[x$a==a]
a b
1: 1 11
2: 2 12
3: 3 13
4: 4 14
5: 5 15
正如MrFlick所指出的,最后一条语句相当于
x[a==a]
。两个
a
都是
x
中的列


请注意,
对于此操作和
数据来说既不是必需的,也不是有用的。table
不需要尾部的
来选择行。

数据。table
首先计算表环境中的名称,即列

例如:

> x <- data.table(a=1:5, b=11:15)
> x[a==1]
   a  b
1: 1 11
> a <- 1
> x[x$a==a]
   a  b
1: 1 11
2: 2 12
3: 3 13
4: 4 14
5: 5 15
>x[a==1]
a b
1: 1 11
>a x[x$a==a]
a b
1: 1 11
2: 2 12
3: 3 13
4: 4 14
5: 5 15
正如MrFlick所指出的,最后一条语句相当于
x[a==a]
。两个
a
都是
x
中的列


请注意,
,它对于此操作和
数据都不是必需的,也没有帮助。表
,不需要尾随的
来选择行。

@matthewlundberg给出了正确的解释,至于解决方法,请使用
get()

另一方面,您的语句中有很多多余的语法。也就是说,
不需要它,也不需要在
i=
参数中引用数据表本身,也不需要结尾逗号

即使用

 structure[atom == get("atom", envir=globalenv())) ]

@matthewlundberg为您提供了正确的解释,对于解决方法,请使用
get()

另一方面,您的语句中有很多多余的语法。也就是说,
不需要它,也不需要在
i=
参数中引用数据表本身,也不需要结尾逗号

即使用

 structure[atom == get("atom", envir=globalenv())) ]

对于这个例子来说,成堆的其他变量实际上是不必要的——我已经删除了它们。顺便问一下,您的数据是
data.table
还是
data.frame
?请务必注意,您使用的不是data.frame,而是data.table。data.table在data.table本身的上下文中评估其索引。这意味着您可以执行
structure[atom==“CA”]
,也意味着如果您有一个名为
atom
的变量,那么它与
structure[atom==atom]
相同,它返回所有行,因为它找到了“atom”首先是表中的符号,然后使用该值。我认为这是一个
数据。表
原子
,在表中计算
=
之后。对于这个示例,实际上不需要成堆的其他变量-我已经删除了它们。顺便问一下,您的数据是
data.table
还是
data.frame
?请务必注意,您使用的不是data.frame,而是data.table。data.table在data.table本身的上下文中评估其索引。这意味着您可以执行
structure[atom==“CA”]
,也意味着如果您有一个名为
atom
的变量,那么它与
structure[atom==atom]
相同,它返回所有行,因为它找到了“atom”首先是表中的符号,然后使用该值。我认为它是一个
数据表
,在表中计算
=
之后是
原子