[R] Problem with filling dataframe's column
    Rui Barradas 
    ru|pb@rr@d@@ @end|ng |rom @@po@pt
       
    Sun Jun 11 12:13:28 CEST 2023
    
    
  
Às 21:05 de 11/06/2023, javad bayat escreveu:
> Dear R users;
> I am trying to fill a column based on a specific value in another column of
> a dataframe, but it seems there is a problem with the codes!
> The "Layer" and the "LU" are two different columns of the dataframe.
> How can I fix this?
> Sincerely
> 
> 
> for (i in 1:nrow(data2$Layer)){
>            if (data2$Layer == "Level 12") {
>                data2$LU == "Park"
>                }
>            }
> 
> 
> 
> 
Hello,
There are two bugs in your code,
1) the index i is not used in the loop
2) the assignment operator is `<-`, not `==`
Here is the loop corrected.
for (i in 1:nrow(data2$Layer)){
   if (data2$Layer[i] == "Level 12") {
     data2$LU[i] <- "Park"
   }
}
But R is a vectorized language, the following two ways are the idiomac 
ways of doing what you want to do.
i <- data2$Layer == "Level 12"
data2$LU[i] <- "Park"
# equivalent one-liner
data2$LU[data2$Layer == "Level 12"] <- "Park"
If there are NA's in data2$Layer it's probably safer to use ?which() in 
the logical index, to have a numeric one.
i <- which(data2$Layer == "Level 12")
data2$LU[i] <- "Park"
# equivalent one-liner
data2$LU[which(data2$Layer == "Level 12")] <- "Park"
Hope this helps,
Rui Barradas
    
    
More information about the R-help
mailing list