【问题标题】:R pipe operator for indexing用于索引的 R 管道运算符
【发布时间】:2018-10-17 12:51:08
【问题描述】:

我想拥有与 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

【问题讨论】:

  • df %l% 1 在您的示例中是 df %&gt;% slice(1),而 1 %&gt;% slice(.data = df) 是相反的顺序。
  • 感谢您指出这一点

标签: r function indexing pipeline


【解决方案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"

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2019-07-15
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多