R 具有指定要删除的列的向量的子集
比方说,我们有一个简单的数据框架,如R 具有指定要删除的列的向量的子集,r,subset,R,Subset,比方说,我们有一个简单的数据框架,如 df <-read.table(text=" colA colB colC colD 1 2 3 4 5 6 7 8 ",header=TRUE,sep="") df有几种不同的方法可以实现这一点,而不仅仅限于子集功能。比如说, Df <- data.frame( colA=1:4, colB=5:8, colC=9:12, colD=13:16) ## rows_to_select <
df <-read.table(text="
colA colB colC colD
1 2 3 4
5 6 7 8
",header=TRUE,sep="")
df有几种不同的方法可以实现这一点,而不仅仅限于子集
功能。比如说,
Df <- data.frame(
colA=1:4,
colB=5:8,
colC=9:12,
colD=13:16)
##
rows_to_select <- c("colA", "colB")
##
> Df[,!(names(Df) %in% rows_to_select)]
colC colD
1 9 13
2 10 14
3 11 15
4 12 16
Df您将无法对字符向量使用减号。但是你可以用一个数字索引向量。此外,您最好使用[
-类型的子集设置
要获得索引,我们可以使用which
> rows <- c("colA", "colB")
> df[, -which(names(df) %in% rows)]
# colC colD
# 1 3 4
# 2 7 8
>行df[,-其中(名称(df)%in%行)]
#感冒
# 1 3 4
# 2 7 8
dplyr
软件包提供了对数据进行子集设置的方法
v1 <- 1:10
v2 <- 11:20
v3 <- rep(c("ana", "bob"), each = 5)
v4 <- letters[1:10]
foo <- data.frame(v1,v2,v3, v4, stringsAsFactors=F)
# Remove column v2 and v3
select(foo, -c(v2:v3))
# v1 v4
#1 1 a
#2 2 b
#3 3 c
#4 4 d
#5 5 e
#6 6 f
#7 7 g
#8 8 h
#9 9 i
#10 10 j
v1子集(df,select=-xtfrm(行到行选择))
@rawr这似乎不适用于行来选择你。你需要行来选择为什么这样更好?更快吗?@user3621464-没有更好,没有更糟。它们的时间差不多。我只是想指出为什么你在字符向量的负索引上遇到问题。对不起,我不是很精确呃。我提到了你的部分“你最好使用[-type subsetting”。为什么我最好使用[/code>而不是$
?我的意思是相对于使用subset
@user3621464-我会向你推荐这个问题的答案。更高效意味着更快?
v1 <- 1:10
v2 <- 11:20
v3 <- rep(c("ana", "bob"), each = 5)
v4 <- letters[1:10]
foo <- data.frame(v1,v2,v3, v4, stringsAsFactors=F)
# Remove column v2 and v3
select(foo, -c(v2:v3))
# v1 v4
#1 1 a
#2 2 b
#3 3 c
#4 4 d
#5 5 e
#6 6 f
#7 7 g
#8 8 h
#9 9 i
#10 10 j