ARTICLE · 1155181
我用AI写R代码3个月,总结出这套提示词框架(附模板)
说一件让我有点不好意思的事。
去年年底,我花了将近一个小时,给一份医院数据写了一个逻辑回归模型。变量处理、缺失值填补、模型构建、结果输出,每一步都要查文档,每一个函数都要想半天参数怎么写。写完之后回头看,代码乱糟糟的,注释也没几行,第二天自己都不太认识了。
然后有一天,我抱着试试看的心态,把需求完整地描述给AI,加了一些具体的背景信息。十分钟之后,一套干净的、有注释的、符合tidyverse风格的代码出现在我面前。我盯着屏幕看了一会儿,有点说不清楚是什么感觉。
不是震撼,是有点懊悔。
但后来我发现,十分钟出代码这件事,不是每次都能复现的。
很多时候,我给AI描述需求,它给我的东西要么太泛化,要么完全不对路。来回改了好几轮,最后花的时间比自己写还多。我开始意识到,用AI写代码,本身也是一门技术。差的提示词和好的提示词,产出的质量可以差出十倍。
接下来三个月,我在这件事上花了很多时间。用AI处理了几十个真实的R语言任务,把每次觉得"这次AI回答得特别好"的提示词单独记录下来,慢慢摸出了一套规律。
今天把这套框架整理出来,给你。
01 为什么你用AI写R代码总感觉"不好使"
在讲框架之前,先说说问题出在哪里。
我观察了不少人用AI辅助R编程的方式,最常见的提示词长这样:
"帮我写个R代码做数据分析"
"我的数据有问题,帮我清洗一下"
"这段代码报错了,怎么修"
这类提示词的问题在于信息量太少。AI不知道你的数据是什么结构,不知道你用的是什么R版本,不知道你希望用哪种风格写代码,更不知道输出的结果要给谁看、用来做什么。
它只能根据这些模糊的描述,给你一个"平均水平"的答案——能用,但不好用,还需要大量修改才能真正上手。
好的提示词要做的事,是给AI足够的上下文,让它不需要猜。
这就是COSTAR框架的核心逻辑。
02 COSTAR框架是什么
COSTAR是新加坡政府科技局提出的一套结构化提示词方法,六个字母分别对应六个信息维度。
用在R语言编程场景里,每个维度的意思是这样的:
C — Context(背景)告诉AI你在做什么项目,数据是什么情况,使用什么工具环境。背景越具体,AI的输出越贴合你的实际需求。
O — Objective(目标)明确你这次要完成的具体任务是什么。不是"帮我分析数据",而是"构建一个以糖尿病诊断结果为因变量的逻辑回归模型"。
S — Style(风格)指定代码的写法风格。在R里,最常见的区分是要不要用tidyverse管道、要不要分块注释、是否需要函数化封装。
T — Tone(语气)说明你希望AI怎么解释内容。想要简洁直接只给代码,还是希望每一步都解释原因,还是用教学式的方式带着你走一遍。
A — Audience(受众)说明这份内容最终给谁看。给审稿人的代码和给同组同学看的代码,详细程度完全不同。
R — Response(响应格式)规定输出的形式。要完整可运行的脚本,还是只要核心代码段,结果解读要不要用中文,要不要加注意事项。
六个维度,不需要每次都写满,但越复杂的任务,填得越完整,回答就越准确。
03 三个可以直接复制的提示词模板
下面给你三个我在实际工作中用得最多的场景。每个模板都可以直接复制,把方括号里的内容替换成你自己的情况。
1 模板一:数据清洗
这是R使用频率最高的场景之一,也是最容易因为描述不清楚而得到废话代码的场景。
【C】我有一份从医院信息系统导出的患者数据,共约500行,变量包括患者编号、入院日期、年龄、BMI、血压和糖尿病诊断结果(0/1)。数据存在以下问题:日期格式不统一(有YYYY/MM/DD和YYYY-MM-DD两种),存在部分缺失值,列名包含中文和空格。使用环境:R 4.3.2,已安装tidyverse。【O】完成数据清洗:1. 统一日期格式为YYYY-MM-DD2. 将列名转换为英文小写下划线命名3. 数值型变量的缺失值用该列中位数填充4. 分类变量的缺失值用众数填充【S】使用tidyverse管道写法(|>),代码按清洗步骤分块,每块前加简短中文注释。【T】专业简洁,注释说明每步的目的,不需要额外解释。【A】有1-2年R使用经验的数据分析师,熟悉基础语法,对janitor包不熟悉。【R】输出完整可运行的R脚本,最后加一行sessionInfo()记录运行环境。用这个模板,AI会给你一份结构清晰、可以直接运行的清洗脚本,而不是随手糊弄你一个generic的示例代码。
2 模板二:数据可视化
可视化的需求里最让人头疼的,是你知道自己想要什么样的图,但不知道怎么用代码实现。这种情况下,把想要的效果描述清楚,比什么都重要。
【C】数据是临床研究中5组实验条件下的基因表达量,每组有均值和标准差,已存储在data.frame中,变量名分别为group、mean_expr、sd_expr。目标是投稿SCI期刊,需要符合期刊图表规范。【O】用ggplot2绘制柱状图,展示5组之间的表达量差异,图中需要显示均值和标准差(误差棒),并在统计差异显著的组间标注显著性符号(*、**、***)。【S】ggplot2风格,使用黑白主题,图形元素简洁,字体大小符合印刷要求(正文10-12pt)。【T】学术、规范,代码后简要说明关键参数的含义。【A】投稿SCI的科研人员,审稿人和期刊编辑是最终受众,需要通过图表规范性审查。【R】输出完整ggplot2代码,最后加导出图片的代码(TIFF格式,300DPI,宽8英寸)。这个模板的关键是把"投稿SCI"这个背景信息放进去。AI输出的代码会自动调整字体大小、图例位置、线条粗细这些细节,不需要你一个个去改。
3 模板三:报错调试
这是用AI最省力的场景,但也是最容易没效果的场景。很多人发给AI一句"代码报错了怎么办",AI根本不知道从何说起。正确的做法是把代码、报错信息、运行环境三样东西一起贴过去。
【C】R版本4.3.2,使用Positron IDE,已安装tidyverse(版本2.0.0)。【O】请找出以下代码的报错原因并修复,确保代码可以正常运行。代码:[把你的代码粘贴在这里]报错信息:[把完整的报错信息粘贴在这里,不要省略]【S】保持原有的代码风格,只修改有问题的部分,不要重写整段代码。【T】耐心、教学式。先解释报错原因,再给出修改方案,最后说明如何避免同类错误。【A】有一定R使用经验但对这类报错不熟悉的分析师,希望理解错误而不只是得到答案。【R】先用1-2句话解释报错原因,然后给出修改后的代码,最后一段说明预防措施,不超过100字。注意模板里有一个细节:"先解释原因,再给修改方案"。如果你只要结果,AI会直接给你改好的代码,你下次还是不知道错在哪里。加上这句话,你每次调试都在学东西。
04 使用这个框架的几个实际体会
用了三个月之后,我有几点感受值得分享。
不需要每次都写满六个维度。
简单的任务,C+O+R三项就够了。比如你只是想快速生成一个描述统计表,没必要写一整套框架。COSTAR的价值在于复杂任务,当你发现AI给你的结果总是跑偏,才是写完整六项的时候。
C(背景)是最值钱的一项。
我试过很多次,同样的目标,背景描述的细致程度不同,输出质量差距非常明显。在背景里直接粘贴glimpse()或str()的输出结果,比用文字描述数据结构准确十倍。如果有报错,把完整的报错信息贴进去,不要自己解读后再转述。
在S(风格)里指定tidyverse。
这一点很重要,但很多人忽略。不加这句话,AI有时候会给你base R风格的旧写法,比如apply族函数、$符号取列、attach()这类东西。现在写R代码,tidyverse管道风格可读性更好,也更容易和AI协作迭代。
把模板存成代码片段,随时调用。
在Positron里可以设置自定义代码片段。把这三个模板存进去,每次用的时候直接触发,不需要重新打。节省的不是几秒钟,是你每次要用AI的时候不需要重新思考"我应该怎么描述这个需求"。
05 最后说一件事
这三个模板是我用得最多的场景,但实际工作里遇到的需求不止这些。
统计建模、机器学习、自动化报告生成、Quarto文档、生信流程……每个场景都有它的最优提示词写法,花了一段时间我陆陆续续整理了10个完整的模板,覆盖了R语言日常工作里90%以上的高频任务。
如果你也在用R+AI处理数据,这份模板应该能帮你省不少时间。
加我微信,发消息『R模板』,我直接发给你,免费的。
扫码添加👇

发送备注:R模板
如果这篇文章对你有用,欢迎转发给同样在用R做数据分析的朋友。下周我会继续更新Positron的实操内容,感兴趣可以关注公众号,不会错过。