不知道怎么回事,但是我想在几个字符串元素中搜索一个术语.这是我的代码看起来(但错误):
inplay = vector(length=nrow(des)) for (ii in 1:nrow(des)) { if (des[ii] = 'In play%') inplay[ii] = 1 else inplay[ii] = 0 }
des是一个存储字符串的矢量,如“Swinging Strike”,“In play(run(s))”,“In play(out(s)recording)”等等.我想要播放的是1s和0s与des矢量相对应的矢量,其中1s在播放中表示des值在其中为“In play%”,否则为0.
我相信第三行是不正确的,因为所有这一切都是返回0的向量,在最后一个元素中有1.
提前致谢!
解决方法
R类似于sql的LIKE只是R的普通索引语法.
“LIKE”操作符通过将指定列中的字符串值与用户提供的模式相匹配来从表中选择数据行
> # create a data frame having a character column > clrs = c("blue","black","brown","beige","berry","bronze","blue-green","blueberry") > dfx = data.frame(Velocity=sample(100,8),Colors=clrs) > dfx Velocity Colors 1 90 blue 2 94 black 3 71 brown 4 36 beige 5 75 berry 6 2 bronze 7 89 blue-green 8 93 blueberry > # create a pattern to use (the same as you would do when using the LIKE operator) > ptn = '^be.*?' # gets beige and berry but not blueberry > # execute a pattern-matching function on your data to create an index vector > ndx = grep(ptn,dfx$Colors,perl=T) > # use this index vector to extract the rows you want from the data frome: > selected_rows = dfx[ndx,] > selected_rows Velocity Colors 4 36 beige 5 75 berry
在sql中,这将是:
SELECT * FROM dfx WHERE Colors LIKE ptn3