Смущен для "который" в R - PullRequest
0 голосов
/ 13 февраля 2019

Я одна зеленая рука и запуталась в том, что следую кодированию при использовании слова "which"

> 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 голосов
/ 13 февраля 2019

Вот краткое объяснение: если вы сделаете это, вы получите значение 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...