[R] if statement and for loop question

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sun May 30 21:57:09 CEST 2021


Hello,

You don't need a loop, the R way is a vectorized solution and it's also 
clearer.
Create a logical index (note only one &) and assign b, c, d where it's TRUE.


i <- try$a != "Positive" & try$a != "VUS"
try <- within(try, {
   b[i] <- ''
   c[i] <- ''
   d[i] <- ''
})


Hope this helps,

Rui Barradas

Às 17:28 de 30/05/21, Kai Yang via R-help escreveu:
> Hello List,I have a data frame which having the character columns:
> 
> | a1 | b1 | c1 | d1 |
> | a2 | b2 | c2 | d2 |
> | a3 | b3 | c3 | d3 |
> | a4 | b4 | c4 | d4 |
> | a5 | b5 | c5 | d5 |
> 
> 
> 
> I need to do: if a1 not = "Positive" and not = "VUS" then values of  b1, c1 and d1 will be zero out. And do the same thing for the a2 to a5 series.
> I write the code below to do this. But it doesn't work. Would you please correct my code?
> Thank you,
> Kai
> 
> 
> for (i in 1:5)
> {
>    if (isTRUE(try$a[i] != "Positive" && try$a[i] != "VUS"))
>    {
>      try$b[i]== ''
>      try$c[i] == ''
>      try$d[i]== ''
>    }
> }
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using 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.
>



More information about the R-help mailing list