如何将数据从中间索引切片到最后而不使用R中的`length`(就像在python中一样)?

Pat*_*Pat 32 r

在python中,我可以从五项列表中切割最后四项(从中拉取值),如下所示:( mylist[1:]注意,基于0的索引).在R中,似乎在冒号之后没有东西是错误的.在这两种语言中,我可以将最后一个参数作为列表的长度,但这并不总是方便的(例如内联切片:) colnames(iris)[2:length(colnames(iris))].

R中有没有这样的语法?

Pat*_*Pat 34

嗯这是混乱的来自python背景,但mylist[-1]似乎做的伎俩.在这种情况下的否定可以被解读为"除了",即取出除第1列之外的所有内容.因此colnames(iris)[-1]可以获取除第一项之外的所有内容.

哦,并且要排除更多项目,将其视为排除的范围,因此colnames(iris)[-2:-4]仅保留第五个项目之后的第一个项目和所有项目.

对于来自python的其他人,请查看将R与python进行比较的精彩幻灯片.

  • 你也可以使用`colnames(iris)[ - (1:5)]`. (7认同)
  • @RomanLuštrik:-)我希望我能找到"Python程序员的R简介"! (6认同)
  • 你也可以使用`head(colnames(iris), - 1)`.`head`和`tail`函数可用于截断向量并允许负参数. (2认同)

Bel*_*ter 15

在R中tail(mylist, -2),具有与mylist[2:]Python 相同的效果.

  • 比较挑剔,因为 R 中的列表是 1-index,所以等价的是 `tail(mylist, -2 + 1)` (2认同)