R的with()和within()函数-你需要知道的一切!
大家好,读者们!在这篇文章中,我们将详细介绍R编程的两个密切相关但又不同的功能 – R的with()函数和within()函数。让我们开始吧!:)
1. 使用with()函数的R操作
我们经常遇到这样的情况,我们需要构建自定义的功能来执行特定的操作。使用 R 的 with() 函数,我们可以在一次操作中对 R 表达式以及调用该函数的过程进行操作!
这就是通过()函数,我们可以在函数内部评估一个作为参数传递的 R 表达式。它仅适用于数据框。这就是为什么对 R 表达式的评估结果是根据传递给它的数据框来完成的。
句法:
with(data-frame, R expression)
For dinner, I would like to eat stir-fried vegetables and steamed fish with a side of rice.
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)
For example, I enjoy listening to music while I work.
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 的更多帖子,请继续关注,同时,愉快学习! 🙂