读者朋友们,大家好!在这篇文章中,我们将详细了解R编程中两个密切相关而又不同的函数 R with()和within()函数。所以,让我们开始吧!
1.R with()函数
我们经常遇到这样的情况:我们觉得需要建立自定义/用户定义的函数来进行某种操作。有了R with()函数,我们可以一次性对R表达式以及调用该函数的过程进行操作!即`with()函数`使我们能够在作为参数传递的函数中评估一个R表达式。它只对\数据框架\工作。这就是为什么R表达式的评估结果是关于作为参数传递给它的数据框架的。
语法:
with(data-frame, R expression)
例:
rm(list = ls())
Num <- c(100,100,100,100,100)
Cost <- c(1200,1300,1400,1500,1600)
data_A <- data.frame(Num,Cost,stringsAsFactors = FALSE)
with(data_A, Num*Cost)
with(data_A, Cost/Num)
在上面的例子中,我们在with()函数中直接计算了数据框data/A的表达式'Num\*Cost'。 之后,我们在函数中也计算了表达式'Cost/Num'。 这两个语句相继出现的原因是为了强调with() 函数不会以任何代价改变原始数据框。它对与数据框架中的每一列相关的数值分别给出输出。 输出:
> with(data_A, Num*Cost)
[1] 120000 130000 140000 150000 160000
> with(data_A, Cost/Num)
[1] 12 13 14 15 16
2.R within()函数
在阅读了with()函数之后,现在让我们来关注它的孪生兄弟!哈哈!开玩笑的吧!虽然这两个函数的名字听起来很相似,但在功能上是不同的。 R `within()函数`在其内部计算表达式的结果,但有一个小小的区别。它允许我们创建一个数据框架的副本,并添加一列,最终存储R表达式的结果。 语法:
within(data frame, new-column <- R expression)
示例:
rm(list = ls())
Num <- c(100,100,100,100,100)
Cost <- c(1200,1300,1400,1500,1600)
data_A <- data.frame(Num,Cost,stringsAsFactors = FALSE)
within(data_A, Product <- Num*Cost)
within(data_A, Q <- Cost/Num)
这里,我们对与with()函数相同的表达式进行了评估。
> within(data_A, Product <- Num*Cost)
Num Cost Product
1 100 1200 120000
2 100 1300 130000
3 100 1400 140000
4 100 1500 150000
5 100 1600 160000
> within(data_A, Q <- Cost/Num)
Num Cost Q
1 100 1200 12
2 100 1300 13
3 100 1400 14
4 100 1500 15
5 100 1600 16
结论:到此,我们已经完成了这个主题。