r语言中两个等于号是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r语言中两个等于号是啥意思相关的知识,希望对你有一定的参考价值。

r语言中等于号是用作赋值的功能。R语言最开始设计的时候,是采用箭头(<-)作为赋值符号的,这是从APL语言继承而来的(箭头表示赋值,等号表示判断)。之后的S语言也沿用了这个用法,再之后R语言为了保持和S语言的兼容性保留了这个箭头。直到2001年,R的更新版本中 才加入了等号(=)赋值。因此,对于一般的赋值语句,箭头(<-)与 等号(=)在 功能上是没有区别的,可以通用。但是等号(=)的作用有两个:它既可以赋值,也可以传递函数参数(实际上传参可以看作一种特殊形式的赋值,给参数赋值)。通常情况下,如果等号(=)出现在单独的环境中,它就是赋值;如果写在函数的参数位置,它就是传参。如果你在设置参数的时候使用了箭头(<-),那么你会发现在全局变量里,会多出一个和参数名相同的赋值的变量,容易导致歧义和错误,而且占用命名空间。 参考技术A 两个等于号组合在一起的意思是比较两者大小的,是一种关系运算符号,双等号代表两者大小相等。 参考技术B R语言入门之——箭头(< - )与等于号(=)的区别 -
2020年12月28日所以等于号也被闲置出来用于赋值的功能,所以后来在R语言中等于号和箭头都被用来用作赋值的功能。
参考技术C 月28日所以等于号也被闲置出来用于赋值的功能,所以后来在R语言中等于号和箭头都被用来用作赋值的功能

purrr::map 中的第一个波浪号是啥意思

【中文标题】purrr::map 中的第一个波浪号是啥意思【英文标题】:What is meaning of first tilde in purrr::mappurrr::map 中的第一个波浪号是什么意思 【发布时间】:2017-12-03 16:54:42 【问题描述】:

我正在查看使用map 的example。这里是:

mtcars %>%
  split(.$cyl) %>% # from base R
  map(~ lm(mpg ~ wt, data = .))

map(~ lm... 中的第一个波浪号是什么意思?也就是说,R 如何解释第一个波浪号? (我知道第二个波浪号表示一个函数......)。另一种问法是,为什么以下不起作用?

mtcars %>%
  split(.$cyl) %>% # from base R
  map(lm(mpg ~ wt, data = .))

【问题讨论】:

你阅读了~的帮助吗?试试help("~") 它描述了~ 通常用于什么。即表示一个公式。那么map 是否只接受公式? 【参考方案1】:

根据map help documentation,map 需要一个函数,但它也接受公式、字符向量、数值向量或列表,后者被转换为函数。

R 中的~ 运算符创建公式。所以~ lm(mpg ~ wt, data = .) 是一个公式。公式在 R 中很有用,因为它们可以防止立即计算符号。例如你可以定义

x <- ~f(a+b)

没有在任何地方定义fab。在这种情况下~ lm(mpg ~ wt, data = .) 基本上是function(x) lm(mpg ~ wt, data = x) 的快捷方式,因为map 可以根据需要更改公式中. 的值。

如果没有波浪号,lm(mpg ~ wt, data = .) 只是 R 中的一个表达式或调用,它会立即被评估。 . 不会在调用时定义,map 无法将其转换为函数。

您可以使用purrr::as_mapper() 函数将这些公式转换为map() 之外的函数。例如

myfun <- as_mapper(~lm(mpg ~ wt, data = .))
myfun(mtcars)
# Call:
# lm(formula = mpg ~ wt, data = .)
# 
# Coefficients:
# (Intercept)           wt  
#      37.285       -5.344  

myfun
# <lambda>
# function (..., .x = ..1, .y = ..2, . = ..1) 
# lm(mpg ~ wt, data = .)
# attr(,"class")
# [1] "rlang_lambda_function"

您可以看到. 如何成为传递给该函数的第一个参数。

【讨论】:

为什么lm(mpg ~ wt,... 不起作用是有道理的。谢谢!

以上是关于r语言中两个等于号是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

R语言 formulal(l~.)是啥意思

r语言中value是啥意思

r语言中acf函数的xaxp参数是啥意思

r语言中tcdm是啥意思

在c语言中 if(0)是啥意思

在C语言的文件中,像r,w,a,r+,w+,a+分别是啥意思,前面三者与后面三者有啥区别吗?