R语言with()与within()函数详解:数据操作与效率提升全攻略
大家好,读者们!在这篇文章中,我们将详细介绍R编程中两个密切相关但又有所不同的函数——R的with()
函数和within()
函数。让我们开始吧!:)
1. R中with()
函数的使用
在R编程中,我们经常需要构建自定义功能来执行特定操作。使用R的with()
函数,我们可以在一次操作中对R表达式以及调用该函数的过程进行操作!
with()
函数允许我们在函数内部评估一个作为参数传递的R表达式。它主要适用于数据框(data frame)。因此,对R表达式的评估结果是根据传递给它的数据框来完成的。
语法:
with(data-frame, R expression)
下面是一个使用with()
函数的示例:
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()
函数
这是文章《R的with()
和within()
函数——你需要知道的一切!》的第2部分(共2部分)。
既然已经阅读了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的更多帖子,请继续关注,同时,愉快学习! 🙂