【问题标题】:R-How to handle subsetting in listsR-如何处理列表中的子集
【发布时间】:2017-05-05 20:10:22
【问题描述】:

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

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

`$Ozone`
[1] 109 110 111 112

$Month

[1] 9 10 11 12

$Temp

[1] 69 70 71 72

感谢您的帮助

【问题讨论】:

  • sapply(y, function(x) x[which(y$Ozone > 108)])
  • 请注意,臭氧和温度中有 13 个元素,但月份只有 12 个。

标签: r list subset


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多