簡體   English   中英

根據數據框列表中的一列過濾行

[英]Filter rows based on one column from a list of dataframes

我有多個數據框的列表,我想通過每個數據框的一列中的某些值過濾列表中的這些數據框。 列表中的每個數據框都有一個名為v1的列,其中包含特殊字符++、-> ,現在我只想過濾列表中每個數據框中具有此箭頭 (->)的行。 這是我的數據框示例,

dput(df)
df1 <- structure(list(v1 = c("->", "++", "->"),
                      t2 = c("James","Jane", "Egg")),
                 class = "data.frame", row.names = c(NA,  -3L))

dput(df2)
df2 <- structure(list(v1 = c("++", "->", "->"),
                      t2 = c("James","Jane", "Egg")),
                 class = "data.frame", row.names = c(NA,  -3L))
dput(df3)
df3 <- structure(list(v1 = c("++", "++", "->"),
                      t2 = c("James","Jane", "Egg"),
                      d3...c = c("James","Jane", "Egg")),
                 class = "data.frame", row.names = c(NA,  -3L))

我已經嘗試過了,但我沒有得到過濾行的數據框

idx = "->"
dfs <- list(df1,df2,df3)
lapply(dfs, function(x) x$v1 %in% idx)

有人幫助

idx <- "->"

# Base R
lapply(dfs, function(df) df[df$v1 == "->",])
lapply(dfs, function(df) df[df$v1 %in% idx,])

# tidyverse

library("purrr")
library("dplyr")

map(dfs, filter, v1 == "->")
map(dfs, filter, v1 %in% !! idx)

嘗試這個:

idx <- "->"
fnct <- function(df){df <- df[df$v1 %in% idx, ]}
df1_idx <- fnct(df1)
df2_idx <- fnct(df2)
df3_idx <- fnct(df3)
dfs <- list(df1_idx, df2_idx, df3_idx)
dfs

結果:

[[1]]
  v1    t2
1 -> James
3 ->   Egg

[[2]]
  v1   t2
2 -> Jane
3 ->  Egg

[[3]]
  v1  t2 d3...c
3 -> Egg    Egg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM