Your query can be illustrated with the following example:
grep(pattern="W","huh")
# integer(0)
No match results in a vector of length 0, hence the error. Instead use grepl
, i.e. if( grepl( "W" , y ) )
.
grepl
has the return value TRUE
or FALSE
.
As a side note, eval( parse( "sometext" ) )
is variously thought of as not a good idea. You could try using the following untidy lapply
statement instead (which will be better than apply
because you don't have to convert to a matrix first):
data.frame( lapply( data , function(x)
ifelse( grepl("W",x) ,
as.integer( gsub("W","",x) ) * 2L ,
x ) ) )
# V1 V2 V3 V4
#1 2 16 4 16
#2 1 16 4 0
#3 2 16 1 0
#4 3 64 3 0
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…