r - 参数 'pattern' 的长度 > 1 并且只有第一个元素将使用数字 grepl

标签 r

我在 ifelse 语句中使用带有因子变量的 grepl 时不断收到此警告: “参数‘pattern’的长度> 1,并且仅使用第一个元素”

我有这些变量:x7 和 y7。 x7 是互斥的字符变量,y7 是不互斥的因子变量,因此是一串数字(0 到 9)。

x7 可以以任何字母结尾,但我想限制为等于 Z 或 J。如果它等于 Z,我希望 y7 以字符串中的任何这些值结尾 (0, 1, 2, 3 ,4)。

这是我写的:

test = ifelse( ( x7 %in% c( "Z" ) & grepl( c( 0 , 1 , 2 , 3 , 4 ) , y7 ) ) | x7 %in% c( "J" ) , 1 , 0 ) 

因此,如果 x7 是 Z 并且 y7 是 0:4,或者如果 x7 是 J,则创建一个虚拟变量(测试),则为 1。所有其他变量将为 0。

我不断收到此警告: “参数‘pattern’的长度 > 1 并且仅使用第一个元素”的意思是,z7 中仅考虑 0 而不是 0:4。

因此,如果是“123”或“246”,则不会计算它们,因为它不是以 0 开头。但如果是“014”或“056”,则它会计算在内。我需要它来计算包含 0 到 4 中任何数字的所有序列,而不仅仅是以 0 开头的序列。

如果字符串中包含这些值(0、1、2、3、4)中的任何一个,则将创建一个等于 1 的虚拟值。

最佳答案

grepl 中:

grepl(c(0, 1, 2, 3, 4) , c(1, 2))

第一个参数pattern的长度应该是1,在你的例子中它的长度是5。 要匹配 0 到 4 之间的数字,您可以执行以下操作:

grepl("[0-4]", c("0", "4", "5", "9"))
# [1]  TRUE  TRUE FALSE FALSE

关于r - 参数 'pattern' 的长度 > 1 并且只有第一个元素将使用数字 grepl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889688/

相关文章:

r - 在 R 中向列表中添加元素的最快方法

r - 使用 roxygen2 v4 导出名称中带有点的非 S3 方法

r - ggplot2:显示x轴标签的类别和子类别

r - 在 Shiny 模块的 renderUI() 中使用 lapply()

r - Quanteda 中的朴素贝叶斯与插入符号 : wildly different results

r - 将 +1 添加到 R 中的季度(日期)

r - 使用 R 在一个单元格中显示多个值

r - 使用带有 dplyr 的向量汇总列

r - 如何从高维 3d 数组中获取统计向量?

r - 从向量中获取唯一组合的网格