R子集整数序列

R子集整数序列,r,logical-operators,R,Logical Operators,我有一个整数序列y括号内的三个语句做了根本不同的事情: 第一行将5指定给f,然后将其用于子集y.1 第二行和第三行比较f到3小于或大于,并在第一种情况下使用比较结果FALSE,在第二种情况下使用比较结果TRUE到子集y 现在,使用逻辑值进行子集设置只需选择y中相应给定索引为真的所有值。因为您只给出了一个逻辑索引,但y包含六个值,所以逻辑索引是循环的,即FALSE被转换为repFALSE,冗长,TRUE也是如此。因此得出了相应的结果 1实际上比这稍微复杂一些,因为在函数调用的参数列表中使用=赋值不

我有一个整数序列y括号内的三个语句做了根本不同的事情:

第一行将5指定给f,然后将其用于子集y.1

第二行和第三行比较f到3小于或大于,并在第一种情况下使用比较结果FALSE,在第二种情况下使用比较结果TRUE到子集y

现在,使用逻辑值进行子集设置只需选择y中相应给定索引为真的所有值。因为您只给出了一个逻辑索引,但y包含六个值,所以逻辑索引是循环的,即FALSE被转换为repFALSE,冗长,TRUE也是如此。因此得出了相应的结果

1实际上比这稍微复杂一些,因为在函数调用的参数列表中使用=赋值不会赋值给变量,而是赋值给同名的参数:

test = function (a) a
test(1) # returns 1
test(a = 1) # also returns 1
test(b = 1) # error: unused argument (b = 1)
子集y[f]只是R中的一个函数调用,它调用了一个名为[]的函数,因此等价于

`[`(y, f)
你自己试试看!有必要在[周围加上反勾号,因为通常,[不是有效的函数名。为了像普通函数名一样使用它,R需要在反勾号之间加上特殊字符

既然[]函数调用没有被调用的参数f,为什么y[f=5]不给出一个错误呢?原因是,[是一个基元而不是一个普通的R函数调用,基元完全忽略了参数名称


使用括号内的三个语句进行的赋值有着根本不同的作用:

第一行将5指定给f,然后将其用于子集y.1

第二行和第三行比较f到3小于或大于,并在第一种情况下使用比较结果FALSE,在第二种情况下使用比较结果TRUE到子集y

现在,使用逻辑值进行子集设置只需选择y内的所有值,对于这些值,相应的给定索引为TRUE。由于您只给定了一个逻辑索引,但y包含六个值,因此逻辑索引将被循环使用–即FALSE将变为repFALSE,longer和TRUE。因此,相应的结果是相同的

1实际上比这稍微复杂一些,因为在函数调用的参数列表中使用=赋值不会赋值给变量,而是赋值给同名的参数:

test = function (a) a
test(1) # returns 1
test(a = 1) # also returns 1
test(b = 1) # error: unused argument (b = 1)
子集y[f]只是R中的一个函数调用,它调用了一个名为[]的函数,因此等价于

`[`(y, f)
你自己试试看!有必要在[周围加上反勾号,因为通常,[不是有效的函数名。为了像普通函数名一样使用它,R需要在反勾号之间加上特殊字符

既然[]函数调用没有被调用的参数f,为什么y[f=5]不给出一个错误呢?原因是,[是一个基元而不是一个普通的R函数调用,基元完全忽略了参数名称

使用的赋值称为逻辑索引

如果f是一个向量,f>3将生成一个包含真或假元素的逻辑向量,然后可以使用该向量索引到y中

但在您的例子中,f>3是一个简单的标量,因此生成一个逻辑值TRUE,然后用它循环索引到y中…即等同于所有真值的索引。

它被称为逻辑索引

如果f是一个向量,f>3将生成一个包含真或假元素的逻辑向量,然后可以使用该向量索引到y中


但在您的例子中,f>3是一个简单的标量,因此生成一个逻辑值TRUE,然后用循环将其索引到y中…即等同于所有真值的索引。

并且,点1意味着您可以在一行中将多个变量分配给同一个值,例如y1,点1意味着您可以将多个变量分配给t一行中的相同值,例如y1,它被称为逻辑索引。如果f是一个向量,f>3将生成一个包含真或假元素的逻辑向量,然后可以用来索引到y。但在您的例子中,f>3是一个简单的标量,因此生成一个逻辑值TRUE,然后用于循环索引到y…即,相当于一个索引所有真值的x。它被称为逻辑索引。如果f是一个向量,f>3将生成一个真或假元素的逻辑向量,然后可以用来索引到y。但在你的例子中,f>3是一个简单的标量,因此生成一个逻辑值TRUE,然后用来循环索引到y…即,相当于所有真元素的索引价值观