对于R中的“哪个”感到困惑

时间:2019-02-13 07:50:21

标签: r

我是一只绿色的手,并且在使用“哪个”时对后续编码感到困惑

> s
  a b
1 1 3
2 2 4
> s[which(s$a>1)][,]
[1] 3 4
> #what I want in fact is to get the dataframe if value a>1 
> s[which(s$a>=1)][,]
  a b
1 1 3
2 2 4
> #no difference for >1 or >=1
> s[which(s$a%in%c(2))][,]
[1] 3 4
> #this way works
> s[which(s$a%in%c(1,2))][,]
  a b
1 1 3
2 2 4
> str(s)
'data.frame':   2 obs. of  2 variables:
 $ a: num  1 2
 $ b: num  3 4

1 个答案:

答案 0 :(得分:1)

这里是一个简短的解释: 如果执行此操作,将得到值2(一个索引)

which(df$a>1)
[1] 2

现在,根据所使用子集的性质,您将获得行或列。 这将返回一个列(第2列)。

df[which(df$a>1)]
  b
1 3
2 4

这将返回正确的值(我想这就是您想要的)

df[which(df$a>1),]
  a b
2 2 4

注意::

df<-read.table(text="a b
 1 3
 2 4",header=T)