R 基于列表中元素的子集数据
在R 基于列表中元素的子集数据,r,dataframe,subset,R,Dataframe,Subset,在R中,我试图使用列表中存储的元素对名为data的data.frame进行子集划分 数据 Data <- read.table(text = " Data_x Data_y Column_X -34 12 A -36 20 D -36 12
R
中,我试图使用列表中存储的元素对名为data
的data.frame
进行子集划分
数据
Data <- read.table(text = " Data_x Data_y Column_X
-34 12 A
-36 20 D
-36 12 E
-34 18 F
-34 10 B
-35 24 A
-35 16 B
-33 22 B
-33 14 C
-35 22 D", header = T)
数据%in%
应该可以做到以下几点:
subset(Data, Column_X %in% variableData)
您还可以使用dplyr
和过滤器:
Data %>% filter(Column_X %in% variableData)
经典lappy
x <- lapply(variableData, function(x){subset(Data, Column_X == x)})
x
# [[1]]
# Data_x Data_y Column_X
# 1 -34 12 A
# 6 -35 24 A
#
# [[2]]
# Data_x Data_y Column_X
# 5 -34 10 B
# 7 -35 16 B
# 8 -33 22 B
然而,正如@Frank指出的,您可以在代码中使用基本子集:
Data[Data$Column_X %in% variableData,]
# Data_x Data_y Column_X
# 1 -34 12 A
# 5 -34 10 B
# 6 -35 24 A
# 7 -35 16 B
# 8 -33 22 B
“警告
这是一个便于交互使用的函数。对于编程来说,最好使用标准的子集设置函数,如[
,尤其是参数子集的非标准计算可能会产生意外的结果。”(?subset
)
此外,行的顺序也会保持不变。这可能需要变量数据是一个向量(而不是OP使用的列表)。我认为OP无论如何都应该使用向量。@Frank-这个问题甚至连我都问过是使用list()
还是vector())
。对于我的问题,我应该坚持使用可变数据。你可能想阅读?subset
中的警告。它不是用来编写程序的。@Frank-你吓了我一跳:?subset
说subset可能会有意料之外的后果。
。你能给我举个例子吗?当然。这是关于它的问答,我知道没有仔细阅读,只是简单地记住避免使用子集
进行编码,所以我不是这方面的真正权威。
do.call(rbind, x)
# Data_x Data_y Column_X
# 1 -34 12 A
# 6 -35 24 A
# 5 -34 10 B
# 7 -35 16 B
# 8 -33 22 B
Data[Data$Column_X %in% variableData,]
# Data_x Data_y Column_X
# 1 -34 12 A
# 5 -34 10 B
# 6 -35 24 A
# 7 -35 16 B
# 8 -33 22 B