xiaotu9316 2024-05-31 16:22 采纳率: 88.6%
浏览 9
已结题

R语言: 数据框提取数据有报错:无like函数

R语言:
数据框提取数据有报错:无like函数

代码如下:

    gcst_df <- gcst_df %>%
      filter(id.exposure == exposure_val,
             method %like% "%Inverse variance weighted%")


报错如下:

Error in `filter()`:
ℹ In argument: `method %like% "%Inverse variance weighted%"`.
Caused by error in `method %like% "%Inverse variance weighted%"`:
! 没有"%like%"这个函数
Run `rlang::last_trace()` to see where the error occurred.

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-31 16:22
    关注

    引自免费微信小程序:皆我百晓生

    看起来你正在尝试使用dplyr包中的filter函数从数据框gcst_df中筛选出满足特定条件的行。然而,在R语言中,并没有内置的%like%操作符用于字符串匹配。你应该使用grepl函数来进行模式匹配,或者如果你使用的是dplyr包,可以使用matches函数。

    这里有一个修改后的代码片段供你参考:

    library(dplyr)
    
    gcst_df <- gcst_df %>%
      filter(id.exposure == exposure_val,
             grepl("Inverse variance weighted", method))
    

    或者使用dplyr的matches函数:

    gcst_df <- gcst_df %>%
      filter(id.exposure == exposure_val,
             method.matches("\\bInverse variance weighted\\b"))
    

    在这个例子中,grepl函数接受一个正则表达式作为搜索模式,而matches函数也是基于正则表达式的匹配,但通常更方便使用。两个函数都会返回逻辑向量(TRUE/FALSE),然后这些向量会被用来过滤数据帧中的行。

    注意,我们在"Inverse variance weighted"这个字符串周围添加了反斜杠\b,这是为了确保我们只匹配整个短语,而不是包含这部分文本的其他单词。例如,这样就不会误匹配到像"Inversely"这样的词。

    运行这段代码应该能解决你的错误,并正确地过滤出数据框中方法列包含"Inverse variance weighted"的行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月8日
  • 已采纳回答 5月31日
  • 创建了问题 5月31日