rbindlist 只列出满足条件的元素
rbindlist only elements that meet a condition
我有一个很大的清单。一些元素是字符串,一些元素是 data.tables。我想创建一个大 data.table,但只绑定 data.tables 的元素。
我知道如何在 for 循环中执行此操作,但我正在寻找更高效的方法,因为我的数据很大并且我需要快速的方法。
谢谢!
library(data.table)
DT1 = data.table(
ID = c("b","b","b","a","a","c"),
a = 1:6
)
DT2 = data.table(
ID = c("b","b","b","a","a","c"),
a = 11:16
)
list<- list(DT1,DT2,"string")
我正在寻找与执行类似的结果,但是由于我有很多条目,所以我不能这样做。
rbind(DT1, DT2)
Filter
data.table
和 rbind
library(data.table)
rbindlist(Filter(is.data.table, list_df))
# ID a
# 1: b 1
# 2: b 2
# 3: b 3
# 4: a 4
# 5: a 5
# 6: c 6
# 7: b 11
# 8: b 12
# 9: b 13
#10: a 14
#11: a 15
#12: c 16
数据
list_df <- list(DT1,DT2,"string")
使用 sapply()
生成逻辑向量以对您的 list
进行子集化
rbindlist(list[sapply(list, is.data.table)])
我们可以使用 purrr
中的 keep
和 bind_rows
library(tidyverse)
keep(list, is.data.table) %>%
bind_rows
# ID a
# 1: b 1
# 2: b 2
# 3: b 3
# 4: a 4
# 5: a 5
# 6: c 6
# 7: b 11
# 8: b 12
# 9: b 13
#10: a 14
#11: a 15
#12: c 16
或使用 rbindlist
和 keep
rbindlist(keep(list, is.data.table))
我有一个很大的清单。一些元素是字符串,一些元素是 data.tables。我想创建一个大 data.table,但只绑定 data.tables 的元素。
我知道如何在 for 循环中执行此操作,但我正在寻找更高效的方法,因为我的数据很大并且我需要快速的方法。
谢谢!
library(data.table)
DT1 = data.table(
ID = c("b","b","b","a","a","c"),
a = 1:6
)
DT2 = data.table(
ID = c("b","b","b","a","a","c"),
a = 11:16
)
list<- list(DT1,DT2,"string")
我正在寻找与执行类似的结果,但是由于我有很多条目,所以我不能这样做。
rbind(DT1, DT2)
Filter
data.table
和 rbind
library(data.table)
rbindlist(Filter(is.data.table, list_df))
# ID a
# 1: b 1
# 2: b 2
# 3: b 3
# 4: a 4
# 5: a 5
# 6: c 6
# 7: b 11
# 8: b 12
# 9: b 13
#10: a 14
#11: a 15
#12: c 16
数据
list_df <- list(DT1,DT2,"string")
使用 sapply()
生成逻辑向量以对您的 list
rbindlist(list[sapply(list, is.data.table)])
我们可以使用 purrr
中的 keep
和 bind_rows
library(tidyverse)
keep(list, is.data.table) %>%
bind_rows
# ID a
# 1: b 1
# 2: b 2
# 3: b 3
# 4: a 4
# 5: a 5
# 6: c 6
# 7: b 11
# 8: b 12
# 9: b 13
#10: a 14
#11: a 15
#12: c 16
或使用 rbindlist
和 keep
rbindlist(keep(list, is.data.table))