Hello,

The first command line produces a logical vector with TRUE if at least one row element of ph is NA and FALSE otherwise.
The second creates a vector of zeros with length equal to nrow(ph).
Now the third command line. ! negates miss, so TRUE becomes FALSE and vice-versa. sum(!miss) counts how many not misses are there and 1:sum(!miss) creates a vector 1, 2, ..., sum(!miss). To see this print each of these components one by one:

print(miss)
print(!miss)
print(sum(!miss))
etc

And select[!miss] uses a logical index into 'select' to set only the values of 'select' where !miss is TRUE equal to 1, 2, 3, ...

I believe you should read R-intro.pdf that comes with your installation of R more carefully, specially sections 2.4 and 2.7.

Hope this helps,

Rui Barradas

Em 06-12-2016 18:18, greg holly escreveu:
Dear All;

I am very new in R and try to understand the logic for a program has been
run sucessfully. Here select[!miss] <- 1:sum(!miss) par is confussing me. I
need to understandand the logic behind this commend line.

Thanks in advance for your help,

Greg


miss <- apply(is.na(ph[,c("M1","X1","X2","X3")]),1, any)
select <- integer(nrow(ph))
select[!miss] <- 1:sum(!miss)

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to