我是一只绿色的手,并且在使用“哪个”时对后续编码感到困惑
> 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
答案 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)