R语言中的with/within函数——你想知道的都在这里!
作者:Safa Mulani
各位读者好!在本文中,我们将详细了解R语言中两个密切相关但又各不相同的函数——with/within函数。让我们开始吧!
1. R语言的with函数
我们经常需要构建自定义/用户定义的函数来执行特定操作。使用R语言的with函数,我们可以一次性完成对R语言表达式的操作以及调用该函数的过程。
换句话说,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
结语
本篇的讨论到此就结束了。如想阅读更多R语言相关介绍,请持续关注更新。祝您学习愉快!