【R语言】:transform函数与with/within函数

如题所述

R语言中,丰富的知识点和相似功能的函数常常让人混淆,导致运行代码时不断报错。然而,这些问题不能忽视,必须深入理解,否则将来可能会遇到更多麻烦。

在学习数据管理时,我遇到了两个功能相似的函数,花费了大量时间查阅资料才彻底搞清楚。

首先是transform函数,用于为数据框添加新列,可以改变原变量列的值,也可以赋值NULL删除列变量。其用法为transform(‘data’, ...),其中data是要修改的数据,'...'代表要进行的修改。

其次是with/within函数,用于修改原始数据,添加新列以及改变原变量列的值等。其用法为with/within(data, expr, ...),其中expr是指R语言的表达式,'...'代表要进行的修改。with函数返回原语句的返回值,而within会返回所有修改生效后的原始数据结构。

以下通过一个例子说明这两个函数的用法。假设需要创建一个名为mydata的数据框,包含向量x1和向量x2,现在创建新变量sumx存储x1和x2的和,以及创建新变量meanx存储x1和x2的平均值。

数据框是R语言中的一种数据结构,内部可以包含多种数据类型。每一列是一个变量,每行是一个观测记录。数据框是R语言中通用的数据结构,也是一种特殊的列表对象。

根据transform函数的作用和用法,为数据框mydata增加数据。然而,使用within函数时遇到了问题,代码如下:

报错!

仔细查看帮助文件后,发现within函数的例子中没有逗号,且expr部分使用大括号{}

又报错!

通过Google查询了大量资料,花费大量时间查看代码,发现所有资料的within函数代码中,meanx后面都换行了。于是尝试将多个修改的代码换行,再次运行代码,这次没有报错。查询更多资料后,发现可以用分号;代替换行,代码如下:

运行代码,正确!没有报错!

整理正确代码如下:

总结全部要点如下:transform函数只能用于数据框改变,而within函数应用更广泛。R语言中expr表达式执行一条语句占一行,执行多条语句需要换行;如果需要多条语句在同一行,则中间应当用分号;隔开。transform(数据框名, 对数据框的一系列修改),这些修改中间用逗号分隔,别换行。within(数据框名, {修改1;修改2;修改3;......})或者within(数据框名,{修改1修改2修改3})。

至此,全部问题都已解决,并全面理解了transform函数和with/within函数的用法,兴奋之情难以言表。

由此得到以下经验:1、Google是解决问题的利器,最好用且没有之一。2、自学且时间充裕的情况下,尽量自己解决问题,寻求他人帮助的优先级尽量往后放,这样才能真正学会。3、在注重解决问题效率的前提下,寻求帮助往往效率更高。4、知识点和难点必须搞清楚,解决问题并输出的同时能够提升自己各方面能力,每天进步一点点。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜