我有一个大名单有12个元素(dataframes)。每个数据帧具有相同的行数和列数。
我想删除具有在列AMOUNT值<0的所有行。
这对列表中的所有dataframes工作要做。
下面是数据帧的一个例子。
df
NAME TIME AMOUNT
1 20 456
2 30 -234
3 15 -13
4 12 267
lapply(our_list, function(X) X[X$AMOUNT >= 0,])
[[1]]
NAME TIME AMOUNT
1 1 20 456
4 4 12 267
[[2]]
NAME TIME AMOUNT
2 2 30 23
数据:
our_list <- list(
data.frame(
NAME = 1:4,
TIME = c(20L, 30L, 15L, 12L),
AMOUNT = c(456L,-234L, -13L, 267L)
),
data.frame(
NAME = 1:4,
TIME = c(20L, 30L, 15L, 12L),
AMOUNT = c(-6L, 23L, -13L, -26L)
)
)
你也可以使用tidyverse方法
library(tidyverse) # loads the tidyverse
list_of_df <- list_of_df %>%
map(., function(x){x %>% filter(AMOUNT >= 0)}) # filters out the values from the AMOUNT column