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”首先是表中的符号,然后使用该值。我认为它是一个数据表
,在表中计算=
之后是原子
。