我想data.frame根据逻辑条件从a中过滤行.我们假设我有数据框
expr_value cell_type
1 5.345618 bj fibroblast
2 5.195871 bj fibroblast
3 5.247274 bj fibroblast
4 5.929771 hesc
5 5.873096 hesc
6 5.665857 hesc
7 6.791656 hips
8 7.133673 hips
9 7.574058 hips
10 7.208041 hips
11 7.402100 hips
12 7.167792 hips
13 7.156971 hips
14 7.197543 hips
15 7.035404 hips
16 7.269474 hips
17 6.715059 hips
18 7.434339 hips
19 6.997586 hips
20 7.619770 hips
21 7.490749 hips
Run Code Online (Sandbox Code Playgroud)
我想要的是获得一个看起来相同但只有一个cell_type数据的新数据框.例如包含单元格类型"hesc"的子集/选择行:
expr_value cell_type
1 5.929771 hesc
2 5.873096 hesc …Run Code Online (Sandbox Code Playgroud) 这是一个虚拟数据:
father<- c(1, 1, 1, 1, 1)
mother<- c(1, 1, 1, NA, NA)
children <- c(NA, NA, 2, 5, 2)
cousins <- c(NA, 5, 1, 1, 4)
dataset <- data.frame(father, mother, children, cousins)
dataset
father mother children cousins
1 1 NA NA
1 1 NA 5
1 1 2 1
1 NA 5 1
1 NA 2 4
Run Code Online (Sandbox Code Playgroud)
我想过滤这一行:
father mother children cousins
1 1 NA NA
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
test <- dataset %>%
filter(father==1 & mother==1) %>%
filter (is.na(children)) %>%
filter …Run Code Online (Sandbox Code Playgroud) 在基 r 中,我可以根据行范围对 data.frame 进行子集化:
mtcars[1:5,]
或者我可以根据逻辑条件进行子集:
mtcars[mtcars$cyl==6,]
但我似乎无法同时做到:
mtcars[1:5 & mtcars$cyl==6,]
警告信息:在 1:5 & mtcars$cyl == 6 中:较长的对象长度不是较短对象长度的倍数
有没有另一种方法可以做到这一点?
用例是使用 LaF 包加载一个巨大的 .csv 文件,它允许使用类似于 base r 的命令进行过滤,但是使用行范围比使用条件加载内容要快得多,并且添加多个条件意味着我有时会等待一天的数据加载。