用于索引的 R 管道运算符

R pipe operator for indexing

我想拥有与 dplyr %>% 相同类型的管道运算符,但用于索引而不是传递函数。例如我想定义函数 %l% 这样至少对于向量和矩阵:

1 %l% df 等同于 df[1](向量)或 df[1,](矩阵)。

abc <- c("a","b", "c")
def <- c("d","e", "f")
df <- data.frame(abc, def, stringsAsFactors = F) 
df %l% 1

例如,您可以这样做。对向量和矩阵的行和列进行子集化 / data.frames.

`%l%` <- lineindex <- function(x, y) {
  result <- NA
  if(is.null(dim(y))|(!is.null(dim(y))&ncol(y)==1)) {
    result <- y[x]
  } else if(length(dim(y))==2) {
    result <- y[x,]
  } 
  return(result)
}
   `%c%` <- colindex <- function(x, y) {
  result <- NA
  if(is.null(dim(y))|(!is.null(dim(y))&ncol(y)==1)) {
    result <- y[x]
  } else if(length(dim(y))==2) {
    result <- y[,x]
  }
  return(result)
}

c(1,NA,2) %>% is.na() %>% which() %l% df 
  abc def
2   b   e
c(1,NA,2) %>% is.na() %>% which() %c% df 
[1] "d" "e" "f"