多个变量 r 上的 grep

莫里西

我被困在尝试做一些应该很简单的事情:grep()用于测试单个数据帧中多个变量的字符串上的模式匹配。对此的所有搜索都会引导我获得有关如何grep()使用多种模式的说明。

创建数据:

df <- data.frame(a = c("apple", "plum", "pair", "apple"), 
                 b = c(1, 2, 3, 4), 
                 c = c("plum", "apple", "grape", "orange"))
df
      a b      c
1 apple 1   plum
2  plum 2  apple
3  pair 3  grape
4 apple 4 orange

现在,我要检查df$adf$c字符串“苹果”。我想这样做是因为我希望df$b所有行的值来自df$a或 中带有“apple”的所有行df$c

我的希望是创建一个函数:f(x)::grep("apple", df$x),并使用 lapply 在我想要检查模式的变量名称列表上对其进行测试:

check_apple <- function(x) {
   grep("apple", df$x)
}

但这不起作用:

check_apple(a)
integer(0)

但是这确实有效:

grep("apple", df$a)
[1] 1 4

为什么这个功能不起作用?我不能在我的函数中使用 aa 变量名作为参数吗?

我的计划是将该函数应用于所有变量,然后在选择unique()值以获取数据框中具有字符串匹配的变量的所有行之前,将结果列表折叠为单个向量不用说,我的数据集比这个例子大得多。

我可以修复这个函数,还是有另一种方法来运行grep()多个变量?

天文学家

您的函数不起作用,因为您试图将一个对象传递a给该函数,但该对象在您的环境中不存在。该函数正在悄悄地失败,并且没有明确表示正在发生这种情况,这可能是 R 中具有挑战性的事情之一。

使函数工作的一种方法是将列的名称作为字符传递给函数,然后在数据框中找到正确的列:

check_apple <- function(x) {
 grep("apple", df[, x])
}


check_apple('a')
[1] 1 4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在R中的图形上绘制多个类别变量?

来自分类Dev

Grep命令在变量上以获得所需的输出

来自分类Dev

grep上的一个变量

来自分类Dev

如何在 zsh 变量上运行 grep?

来自分类Dev

只是grep在不同行上的多个模式

来自分类Dev

如何在R的X轴上绘制多个变量,并在Y轴上绘制其值?

来自分类Dev

将grep结果设置为多个变量

来自分类Dev

R:不能在“ +”字符上使用grep()吗?

来自分类Dev

R:不能在“ +”字符上使用grep()吗?

来自分类Dev

bash-如何在变量上使用grep

来自分类Dev

在多个文件上匹配时格式化grep的输出

来自分类Dev

分组多个变量-R

来自分类Dev

R-循环中多个数据帧上的新变量

来自分类Dev

R-循环中多个数据帧上的新变量

来自分类Dev

R 新变量按组在多个滞后值和领先值上循环

来自分类Dev

如何在多个变量上使用相同的R重新编码函数而不对每个变量进行编码?

来自分类Dev

Grep变量并将结果存储在R中的向量中

来自分类Dev

R grep在向量中找到多个完整单词

来自分类Dev

R中的多个模式的grep提供无法解释的结果

来自分类Dev

投射多个值变量R

来自分类Dev

R 中多个变量的 glm

来自分类Dev

Java方法上的grep

来自分类Dev

单行上的Grep

来自分类Dev

远程机器上的grep

来自分类Dev

Solaris上的“ grep”用法

来自分类Dev

如何grep多个文件上的多个字符串?

来自分类Dev

Grep多个文件,其文件名存储在变量中

来自分类Dev

更改多个JavaScript变量上的CSS

来自分类Dev

在一行上显示多个变量?