R-如何处理列表中的子集

时间:2017-05-05 20:10:23

标签: r list subset

我有一个这样的列表y<-list(Ozone=100:112, Month=1:12, Temp=60:72)我想提取元素,即臭氧&gt; 108,在第二个查询中,我想提取(同时)臭氧的月和温度元素&gt; 108

所以,(因为这是一个简单的例子)输出将是:

`$Ozone`
[1] 109 110 111 112

$Month

[1] 9 10 11 12

$Temp

[1] 69 70 71 72

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

y是一个向量列表,它是data.frame及其后代data.table和tibble的定义。

因此,您可以将y转换为类似data.frame的对象并在那里进行选择:

y <- list(Ozone = 101:112, Month = 1:12, Temp = 61:72)

注意列表y的不同定义:每个元素都是一个长度相同的向量12.

library(data.table)
# coerce to data.table 
DT <- as.data.table(y)

# select
DT[Ozone > 108, Ozone]
#[1] 109 110 111 112

DT[Ozone > 108]
#   Ozone Month Temp
#1:   109     9   69
#2:   110    10   70
#3:   111    11   71
#4:   112    12   72

或者基本R语法:

DF <- as.data.frame(y)

DF[DF$Ozone > 108, "Ozone"]
#[1] 109 110 111 112

DF[DF$Ozone > 108, ]
#   Ozone Month Temp
#9    109     9   69
#10   110    10   70
#11   111    11   71
#12   112    12   72