so bit strange, pretty new r , facing weird problem. have data frame, , there column called sndate
combined value of 2 different columns.
i want check if data frame has column named sn
, if doesn't split sndate
fill sn
column.
here code
if(!('sn' %in% colnames(data))){ #do spliting here }
funny thing is, keeps saying it's there, , stuff in never gets triggered. , when this:
print(data$sn)
it print value of data$sndate
. r have sort of lazy name filling or something? strange me.
thank help
when
print(data$sn)
it works because $
using partial name matching. example, try
mtcars$m
there no column named m
, $
partially matches mpg
. unfortunately, not used in %in%
, need use complete exact column name in
if(!('sndate' %in% colnames(data))){ #do spliting here }
you insead use along lines of pmatch()
names(mtcars)[2] <- "sndate" names(mtcars)[pmatch("sn", names(mtcars))] # [1] "sndate"
so if()
statement might go -
nm <- colnames(data) if(!nm[pmatch("sn", nm)] %in% nm) { ... }
or even
if(is.na(pmatch("sn", names(data)))
might better
Comments
Post a Comment