日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R统计笔记(四):中括号与双中括号的差异

發布時間:2025/3/21 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R统计笔记(四):中括号与双中括号的差异 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
R統計筆記(四):中括號與雙中括號的差異
2017年06月14日 22:26:05閱讀數:3628

理解的差異首先從語言方面開始,如果你有其他語言的慣性思維,比如JAVA、C或者Javascript,那對R語言中括號的理解,簡直就是匪夷所思。

1. 所有的對象都可以引用中括號

是的,你沒有看錯,R語言中所有對象都可以引用中括號,包括標量(常量),如下:

# 標量第一個元素總是指向自己 # 下面的表達式恒為真 1[1] == 1 # 既然上面的等式成立,那么下面的等式也成立 1[1][1] == 1 1[1][1] == 1[1]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

按照面向對象的思想,1[1][1] == 1[1]很好理解,那怎么理解[[1]]呢?是對[]的分解嗎?

2. [[]]其實是一種方法

經過反復測試與查閱資料,[[]]要結合起來理解,它就代表一個方法,或者是一個原子的操作符,證明如下:

# 獲取操作符[[的幫助 ?`[[`
  • 1
  • 2

得到的幫助內容如下:

Both [[ and $ select a single element of the list. The main difference is that $ does not allow computed indices, whereas [[ does. x$name is equivalent to x[["name", exact = FALSE]]. Also, the partial matching behavior of [[ can be controlled using the exact argument. getElement(x, name) is a version of x[[name, exact = TRUE]] which for formally classed (S4) objects returns slot(x, name), hence providing access to even more general list-like objects.
  • 1
  • 2
  • 3

簡單翻譯以下, [[]]與$類似,都是list選取單個元素,唯一的區別是[[通過參數“exact”激活模糊匹配,如下:

# 定義list對象 li <- list(name='yiifaa', age=35) # 從list提取元素一定要用[[]] # 模糊匹配到name li[['nam', exact=FALSE]]
  • 1
  • 2
  • 3
  • 4
  • 5

很神奇吧,[[]]竟然還支持模糊匹配。
結合第一條規則,我們還可以得出如下結論:

# 如果R語言支持對象比較的話,那么li[1] == li li[1][[1]] == li[[1]] # 繼續玩轉它們 li[[1]][1] == li[[1]]
  • 1
  • 2
  • 3
  • 4

好了,看了這么多例子,那么如下的表達式該如何理解:

li[[[1]]]
  • 1

當然是錯誤了,因為沒有“[[[”這樣的操作函數(符)。

結論

在R語言中,[]與[[]]都是操作函數,只是適用范圍不一樣,[[]]主要用于獲取列表(list)中的元素,而[]則可以適用于所有對象,但不能按索引抓取列表(list)中元素。

總結

以上是生活随笔為你收集整理的R统计笔记(四):中括号与双中括号的差异的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。