【发布时间】:2018-12-21 19:09:30
【问题描述】:
我在 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,则创建一个虚拟变量(测试)。如果 x7 是 J,则它是 1。所有其他都将为 0。
我不断收到此警告: “参数'模式'的长度> 1并且只使用第一个元素”意思是,在z7中只考虑0而不是0:4。
所以,如果是“123”或“246”,它不会计算它们,因为它不是以 0 开头的。但如果它是“014”或“056”,它会计算。我需要它来计算所有包含数字 0 到 4 的序列,而不仅仅是以 0 开头的序列。
如果这些值(0、1、2、3、4)中的任何一个在字符串中,将创建一个等于 1 的虚拟值。
【问题讨论】:
标签: r