You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中基于DataFrame列中*字符创建新列的问题求助

解决DataFrame中根据带*的列生成out/notout列的问题

嘿,我明白你遇到的麻烦了——你写的代码里新列全变成notout,是因为*在正则表达式里是个特殊元字符,它的作用是匹配前面的字符零次或多次,而不是你想的字面意义上的星号。直接用grepl("*", ...)会匹配所有字符串,所以所有行都返回TRUE,自然全是notout啦。

下面给你两种解决办法,都能达到你想要的效果:

方法1:转义星号(正则方式)

把*转义成字面字符,需要用两个反斜杠\\*(因为R里反斜杠本身也是转义字符):

# 注意列名如果有特殊字符(比如空格、斜杠),要用反引号包裹
df$`out/notout` <- ifelse(grepl("\\*", df$runscored), "notout", "out")

方法2:使用fixed参数(字面匹配)

告诉grepl不要把字符串当作正则表达式,而是直接做字面匹配,只需要加上fixed = TRUE参数:

df$`out/notout` <- ifelse(grepl("*", df$runscored, fixed = TRUE), "notout", "out")

验证结果

用你的示例数据测试后,得到的结果会和你期望的完全一致:

runscored out/notout
1        34        out
2        45        out
3         6        out
4         9        out
5       62*     notout
6        55        out
7       70*     notout

另外提醒一下,你的原代码里列名是Runs Scored(带空格),但示例数据里是runscored,要注意保持列名一致哦,不然会报错~

内容的提问来源于stack exchange,提问作者Snigdha Shukla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:58:15