有没有办法用R中的括号将每一列从一列选择到另一列?

有没有办法用R中的括号将每一列从一列选择到另一列?,r,R,我知道在subset()中,可以很容易地将每一列从一列开始,以另一列结束 df <- as.data.frame(state.x77) subset(df, Frost > 30, select=Illiteracy:Murder) df 30,选择=文盲:谋杀) 我知道用括号你可以做类似于df[df$Frost>30,3:5] 有没有办法用括号重新创建使用列名的subset语句 你会发现 df <- state.x77 df[df[, "Frost"] > 150,

我知道在
subset()
中,可以很容易地将每一列从一列开始,以另一列结束

df <- as.data.frame(state.x77)
subset(df, Frost > 30, select=Illiteracy:Murder)
df 30,选择=文盲:谋杀)
我知道用括号你可以做类似于
df[df$Frost>30,3:5]

有没有办法用括号重新创建使用列名的subset语句

你会发现

df <- state.x77
df[df[, "Frost"] > 150, c("Illiteracy", "Life Exp", "Murder")]
顺便说一下,
state.x77
是一个矩阵,而不是数据帧。作为一个矩阵,你可以使用

df <- state.x77
df[df[, "Frost"] > 150, which(colnames(df)=="Illiteracy"):which(colnames(df)=="Murder")]
df 150,which(colnames(df)=“文盲”):which(colnames(df)=“谋杀”)]
或者作为数据帧

df <- as.data.frame(state.x77)
df[df[, "Frost"] > 150, which(names(df) == "Illiteracy"):which(names(df) == "Murder")]
df150,其中(姓名(df)=“文盲”):其中(姓名(df)=“谋杀”)]

为了产生相同的结果,您可以编写一个函数,使这个函数更漂亮,这是dplyr的另一种方法

library(dplyr)
df = as.data.frame(state.x77)
df %>% filter(Frost > 30) %>% select(Illiteracy:Murder) %>% head()

  Illiteracy Life Exp Murder
1        1.5    69.31   11.3
2        1.9    70.66   10.1
3        0.7    72.06    6.8
4        1.1    72.48    3.1
5        0.9    70.06    6.2
6        2.0    68.54   13.9

是否有带括号的
列a
列B
等效项?我考虑的是有很多很多列的数据帧。@Cauder-我添加了一个列范围
dplyr select
应该做的示例。将其与
filter
filter\u组合在一起
library(dplyr)
df = as.data.frame(state.x77)
df %>% filter(Frost > 30) %>% select(Illiteracy:Murder) %>% head()

  Illiteracy Life Exp Murder
1        1.5    69.31   11.3
2        1.9    70.66   10.1
3        0.7    72.06    6.8
4        1.1    72.48    3.1
5        0.9    70.06    6.2
6        2.0    68.54   13.9