我有两个数据框,我想通过检测其中一列中的字符串来连接它们.假设我有以下示例数据框列:

df <- tibble(value = c("a <- 1:3", "b <- function()", "c <- rn或m(1:10)", "d <- c(x, y, z)"), 
             line = 1:4)

dfSearch <- c("a", "b", "c") %>% as_tibble()

我想加入它们,在df的字符串中可以找到dfSearch的值,所以它看起来是这样的:

value  line
  a     1
  b     2
  c     3
  d     NA             

但是,str_detect()不适用于不等长的向量.这就是我所try 的:

new_df <- dfSearch %>%
filter(str_detect(value, df$value))

new_df <- dfSearch %>%
inner_join(., df, by=str_detect(value, df$value))

And each time I get the same err或 message: Err或 in str_detect(): ! Can't recycle string (size 3) to match pattern (size 4).

你知道我怎么才能做到这一点吗?

推荐答案

我认为我们不需要加入,我们可以这样做:

df %>%
  mutate(line2 = if_else(sub(" .*", "", value) %in% dfSearch$value, line, line[NA]))
# # A tibble: 4 × 3
#   value             line line2
#   <chr>            <int> <int>
# 1 a <- 1:3             1     1
# 2 b <- function()      2     2
# 3 c <- rnorm(1:10)     3     3
# 4 d <- c(x, y, z)      4    NA

如果你因为其他原因需要加入,那么.

dfSearch <- tibble(value = c("a", "b", "c"), insearch = TRUE)
df %>%
  mutate(value = sub(" .*", "", value)) %>%
  left_join(dfSearch, by = "value")
# # A tibble: 4 × 3
#   value  line insearch
#   <chr> <int> <lgl>   
# 1 a         1 TRUE    
# 2 b         2 TRUE    
# 3 c         3 TRUE    
# 4 d         4 NA      

在那里你可以使用insearchNA-如果需要的话,可以使用line.

另一种 Select 是模糊联接:

dfSearch %>%
  mutate(re = paste0("^", value, " ")) %>%
  fuzzyjoin::regex_full_join(df, ., by = c("value" = "re"))
# # A tibble: 4 × 5
#   value.x           line value.y insearch re   
#   <chr>            <int> <chr>   <lgl>    <chr>
# 1 a <- 1:3             1 a       TRUE     "^a "
# 2 b <- function()      2 b       TRUE     "^b "
# 3 c <- rnorm(1:10)     3 c       TRUE     "^c "
# 4 d <- c(x, y, z)      4 NA      NA        NA  

R相关问答推荐

多个ggpredicate对象的平均值

将模拟变量乘以多个观测结果中的模拟变量

从多个前置日期中获取最长日期

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

使用gcuminc,如何使用逗号格式化风险表?

使用case_match()和char数组重新编码值

如何动态更新selectizeInput?

如何将移除事件分配给动态创建的按钮?

如何在一次运行中使用count进行多列计数

线性模型斜率在减少原始数据时提供NA

是否有新方法来更改Facet_WRAP(Ggplot2)中条文本的文本 colored颜色 ?

根据r中另一个文本列中给定的范围对各列求和

将文本批注减少到gglot的y轴上的单个值

在同一单元格中创建包含整数和百分比的交叉表

如何修改GT表中组名行的 colored颜色 ?

条形图中的条形图没有try 赋予它们的 colored颜色

对计算变量所有唯一值的变量进行变异

如何在一个GGPLATE中绘制多个灰度平滑?

修复标签重叠和ggploy内的空间

臭虫?GradeThis::grade_this_code()在`-code-check`块中失败