Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 具有指定要删除的列的向量的子集_R_Subset - Fatal编程技术网

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