从列表中的每个项目中提取第二个元素

时间:2014-03-15 22:08:03

标签: r

此附加信息可能会有所帮助。这是我想要做的: 这会引发更多的光,但这就是我想要的。假设您有一个类似下面的数据 -

Region      Open    Store
120..141       +    France
145..2115      +    Germany
3322..5643     +    Wales
5646..7451     -    Scotland
7454..8641     -    Mexico
8655..9860     -    India
9980..11413    +    Zambia
11478..1261    -    Nicaragua
12978..1318    +    Sweeden

我试图做的是选择找到第二个元素(141)和连续的第一个元素(143)之间的差异,如果它们符合某个值并且它们具有相同的符号(+或 - ),则列出他们所有的商店在一起。

2 个答案:

答案 0 :(得分:6)

使用sapply并将[作为函数传递给它,并告诉它要提取第二个元素。

# Create your data set
dat <- list(c(100, 150), c(201, 202), c(147, 269), c(301, 401))
dat
#[[1]]
#[1] 100 150
#
#[[2]]
#[1] 201 202
#
#[[3]]
#[1] 147 269
#
#[[4]]
#[1] 301 401
#
sapply(dat, "[", 2)
#[1] 150 202 269 401

答案 1 :(得分:2)

我同意@Dason理解机制是很重要的(即你不能像R一样对待R),但是如果你仍然难以理解2.6小时,那么这可能会有所帮助:

dat <- list(c(100, 150), c(201, 202), c(147, 269), c(301, 401))
second <- sapply(dat, "[", 2) 
first <- sapply(dat[2:length(second)], "[", 1)
second[1:length(first)] - first

了解更多您真正想要做的事情会有所帮助,因为我并不完全相信这是您正在寻找的最终结果。