r - Select one non NA from multiple rows -


surprised hasn't been asked before (as far can see)

i have data.frame multiple columns , 2 rows, such below.

df<-as.data.frame(rbind(row1=c(na,na,rep(0,2),"foo",na,"bar","foo","foobar","etc"),                    row2=c(300,23.4,1,2,"bar","foo","bar","hello","world","etc"))) 

i want select entry in first row default if it's not na. if na want entry in second row. i've tried following:

apply(df,2,function(x) ifelse(is.na(x[1]),x[2],x[1])) 

however, x combination of numeric , character , each columns class needs maintained apply causing issues. need returned data frame , not named vector.

try , see if after.

df<-as.data.frame(rbind(row1=c(na,na,rep(0,2),"foo",na,"bar","foo","foobar","etc"),                         row2=c(300,23.4,1,2,"bar","foo","bar","hello","world","etc")))   outdf <- lapply(df, function(x){   if(is.na(x[[1]])&!is.na(x[[2]])){     x[[1]] <- x[[2]]   }   x }) data.frame(outdf, stringsasfactors = false)  

Comments

Popular posts from this blog

c# - Update a combobox from a presenter (MVP) -

How to understand 2 main() functions after using uftrace to profile the C++ program? -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -