R使用endsWith将函数应用于向量

时间:2017-12-12 15:15:55

标签: r

我需要将一个函数(它有两个不同长度的参数)应用于向量中的每个项目。该函数查找第一个参数中以第二个参数中的字符结尾的值并输出索引(目标是使用模糊连接在两个表上执行左连接,但是regex_left_join崩溃,所以这是第一步解决方案)。

示例输入:

    x <- c("492820UA665110", "492820UA742008", "493600N077751", "671884RB25355")
    y <- c("RB25355", "S56890")

功能:

    idx_endsWith <- function(.x, .y) {
       return(ifelse(length(which(endsWith(.x, .y))) == 1,
              which(endsWith(.x, .y)),
              NA))
     }

例如,

> idx_endsWith(x, y[1])
[1] 4

如何在不使用循环的情况下将此函数应用于y中的每个元素?我需要对函数进行矢量化,但是mapply不起作用,因为向量需要相同的长度。我正在寻找dplyr的解决方案。

1 个答案:

答案 0 :(得分:0)

对于dplyr,根据您的要求,这应该有效:

data.frame(y, stringsAsFactors = FALSE) %>% 
    rowwise %>% 
    mutate(index = idx_endsWith(x, y))