R:可以修改“[”和“[[”来引入类似Python的负索引吗?

时间:2016-02-02 16:37:38

标签: r subset

我想要一种简单的方法来访问对象的最后值。我已经实现了一个允许类似Python的负索引的函数(count-backwardwards-and-keep-only-those-elements而不是R的remove-those-elements-and-keep-all-other-elements)。有一些问题,但没有人试图这样做:

基本上,我想重新定义[[_,以便可以使用特殊运算符(例如iris[1, ] #first row iris[-1, ] #everything but first row iris[_1, ] #last row, equivalent to tail(iris, 1) iris[, _1] #last column, equivalent to iris[ncol(iris)] )来使用类似Python的索引。例如,像这样:

+

有可能吗?我知道有可能重新定义,例如extract_last = function(x, margin_1, margin_2, drop = FALSE) { #check types if (!(is.vector(x) || is.matrix(x) || is.data.frame(x))) stop("x was an unsupported type (not a vector, matrix or data.frame)!") #vector if (is.vector(x)) return(rev(x)[margin_1]) #get dims x_dims = dim(x) #make indices if (missing("margin_1")) { margin_1 = 1:x_dims[1] } else { margin_1 = (x_dims[1] + 1) - margin_1 } if (missing("margin_2")) { margin_2 = 1:x_dims[2] } else { margin_2 = (x_dims[2] + 1) - margin_2 } #subset return(x[margin_1, margin_2, drop = drop]) } #tests extract_last(iris, 1) == tail(iris, 1) extract_last(iris, 10:1) == tail(iris, 10) extract_last(iris, , 1) == iris[5] extract_last(iris, , 2:1) == iris[4:5] extract_last(iris, 10:1, 1) == iris[141:150, 5, drop = FALSE] 引入与其他语言一样的字符连接(see this answer)。

如果不可能,这是我的解决方法功能:

LOAD DATA INFILE

0 个答案:

没有答案