【发布时间】:2020-09-29 18:43:56
【问题描述】:
我想根据属于多个范围的值将数据框制作为列表,以便每个值属于每个范围成为该列表中的一个元素。例如,如果我有 10 个范围和 nrow=n 的数据框,那么我将得到一个包含 10 个数据框的列表。
数据
df<- data.frame(x=seq(33, 37, 0.12), y=seq(31,35, 0.12))
library(data.table)
range<- data.table(start =c(36.15,36.08,36.02,35.95,35.89,35.82,35.76,35.69),
end = c(36.08,36.02,35.95,35.89,35.82,35.76,35.69,35.63))
我试过了
nlist<-list(
df[which(df$x>36.15),],
df[which(df$x<=36.15 & df$x>36.08),],
df[which(df$x<=36.08 & df$x>36.02),],
df[which(df$x<=36.02 & df$x>35.95),],
df[which(df$x<=35.95 & df$x>35.89),],
df[which(df$x<=35.89 & df$x>35.82),],
df[which(df$x<=35.82 & df$x>35.76),],
df[which(df$x<=35.76 & df$x>35.69),],
df[which(df$x<=35.69 & df$x>35.63),],
df[which(df$x <= 35.63),])
有两个问题。首先,我想循环而不是编写每个范围限制的值。其次,这段代码:
Reduce('+', lapply(nlist, nrow))
产生行的总和 = 35,而我的数据框有 nrow = 34。这个额外的值来自哪里?
【问题讨论】: