簡體   English   中英

R-拆分+列表功能

[英]R- Split + list function

誰能解釋R中的split和list函數? 我很困惑如何一起使用它們。 例如

x <- rnorm(10)
a <- gl(2,5)
b <- gl(5,2)
str(split(x,list(a,b))    

我得到的結果是

List of 10
$ 1.1: num [1:2] 0.1326 -0.0578
$ 2.1: num(0) 
$ 1.2: num [1:2] 0.151 0.907
$ 2.2: num(0) 
$ 1.3: num -0.393
$ 2.3: num 1.83
$ 1.4: num(0) 
$ 2.4: num [1:2] 0.4266 -0.0116
$ 1.5: num(0) 
$ 2.5: num [1:2] 0.62 1.64

x中的值如何分配給list(a,b)的級別? 為什么有些級別沒有任何值,而有些級別卻有很多值? 我看不到x的值與list(a,b)的級別之間的任何關系。 他們是隨機分配的嗎?

非常感謝有人可以幫助我。

當您調用split(x, list(a, b)) ,您基本上是說,如果兩個x值具有相同的ab值,則它們在同一組中,否則位於不同的組中。

list(a, b)
# [[1]]
#  [1] 1 1 1 1 1 2 2 2 2 2
# Levels: 1 2
# 
# [[2]]
#  [1] 1 1 2 2 3 3 4 4 5 5
# Levels: 1 2 3 4 5

我們可以看到x中的前兩個元素將在組“ 1.1”(a = 1和b = 1的組)中,下兩個將在組1.2中,下一個將在組1.3中,下一個將在2.3組中,下兩個將在2.4組中,最后兩個將在2.5組中。 這就是我們調用split(x, list(a, b))時所看到的:

split(x, list(a, b))
# $`1.1`
# [1] -0.2431983 -1.5747339
# $`2.1`
# numeric(0)
# $`1.2`
# [1] -0.1058044 -0.8053585
# $`2.2`
# numeric(0)
# $`1.3`
# [1] -1.538958
# $`2.3`
# [1] 0.8363667
# $`1.4`
# numeric(0)
# $`2.4`
# [1]  0.8391658 -1.0488495
# $`1.5`
# numeric(0)
# $`2.5`
# [1]  0.3141165 -1.1813052

您之所以有多余的空組(例如組2.1),是因為ab具有一些成對的值,而沒有x值。 ?split ,您可以了解到不將這些內容包含在輸出中的方法是使用drop=TRUE選項:

split(x, list(a, b), drop=TRUE)
# $`1.1`
# [1] -0.2431983 -1.5747339
# $`1.2`
# [1] -0.1058044 -0.8053585
# $`1.3`
# [1] -1.538958
# $`2.3`
# [1] 0.8363667
# $`2.4`
# [1]  0.8391658 -1.0488495
# $`2.5`
# [1]  0.3141165 -1.1813052

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM