我希望拥有与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
答案 0 :(得分:0)
例如,您可以执行此操作。为向量和矩阵/ 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"