R 如何使用列';数字而不是标签?

R 如何使用列';数字而不是标签?,r,dataframe,R,Dataframe,以下是玩具示例: d1 <- data.frame( inds = 1:8, A = c("Go", "Nah", "Nah", "Go", "Nah", "Nah", "Go", "Go"), B = rep("Nah", 8), C = c("Go", "Nah",

以下是玩具示例:

d1 <- data.frame(
inds = 1:8, A = c("Go", "Nah", "Nah", "Go", "Nah", "Nah", "Go", "Go"), 
B = rep("Nah", 8), C = c("Go", "Nah", "Nah", "Go", "Go", "Nah", "Nah", "Go")
)

filter(d1, A == "Go" & C == "Go")
我希望这能奏效,但事实并非如此

微小更新:

我得到了我的答案,但我还需要一些更进一步的东西,让被接受的答案帮助我。我想这可能对未来的一些观众有用

假设我的一些列以“_QC”结尾,我需要这些列的索引,然后根据它们的值进行过滤

我就是这样做的:

c1 <- c(grep("_QC", colnames(d1), fixed = TRUE))

filter(d1, across(c1, ~. == "Go"))

c1您可以跨
使用

library(dplyr)
d1 %>% filter(across(c(2, 4), ~. == 'Go'))

#  inds  A   B  C
#1    1 Go Nah Go
#2    4 Go Nah Go
#3    8 Go Nah Go
cols <- c(2, 4)
d1[rowSums(d1[cols] == 'Go') == length(cols), ]

在基数R中,我们可以使用
行和

library(dplyr)
d1 %>% filter(across(c(2, 4), ~. == 'Go'))

#  inds  A   B  C
#1    1 Go Nah Go
#2    4 Go Nah Go
#3    8 Go Nah Go
cols <- c(2, 4)
d1[rowSums(d1[cols] == 'Go') == length(cols), ]

cols我们也可以使用
Reduce
from
base R

subset(d1, Reduce(`&`, lapply(d1[c(2, 4)], `==`, 'Go')))
#  inds  A   B  C
#1    1 Go Nah Go
#4    4 Go Nah Go
#8    8 Go Nah Go

A
数据表
选项

> v <- c(2,4)
> setDT(d1)[, .SD[rowSums(.SD[, v, with = FALSE] == "Go") == length(v)]]
   inds  A   B  C
1:    1 Go Nah Go
2:    4 Go Nah Go
3:    8 Go Nah Go
>v setDT(d1)[,.SD[行和(.SD[,v,with=FALSE]=“Go”)==length(v)]]
inds A B C
1:1去不去
2:4去不去
3:8去不去