[R] Eliminating a row if something happens
David Winsemius
dwinsemius at comcast.net
Sat Jul 2 00:10:12 CEST 2011
On Jul 1, 2011, at 12:14 PM, Trying To learn again wrote:
> Hi all,
>
> I want to create a new matrix based on a previous matrix.
>
> You see, If my "data" matrix accomplises this:
>
> if(rowSums(data[i,])>16|rowSums(data[i,])<28)
> data[i,]= data[i,]
'if' is not the right command.
> # if sum of rows is more than 16 and less 28 I conservate the row
> #but How I say if else "remove" the line (I tried this) but doesn´t
> works...I´m really a asn
Use logical indexing. (Using 'dat' because 'data' is bad practice as
an object name.)
dat2 <- dat[ rowSums(dat) >16 | rowSums(dat) < 28 , ]
>
> else if(data[i,]=data[-i,])
The i- else construct only works on scalars. If you give them vectors
they only use the first value and then they warn. You can use ifelse
on vectors.
>
> You see imagine my data matrix is 10x4 and only 3 rows passes the
> condition...the resulting matrix will be 3x4
>
> I tried also to save the new matrix as csv like this
>
> write.csv(data, file = "input1.csv")
>
> How should I proceed to save as a txt?
>
> Many thanks I really like this problems but I feel my mind is
> restricted to
> more easy things¡¡¡jajaj
>
> [[alternative HTML version deleted]]
If you are "trying to learn" then try to learn to post in plain text.
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list