in my table, some cells are vectors instead of a single value, i.e. a column is a list instead of a vector:
dt1 <- data.table( colA= c('A1','A2','A3'), colB=list('B1',c('B2a','B2b'),'B3'), colC= c('C1','C2','C3'), colD= c('D1','D2','D3') ) dt1
I need to reformat it to long format without selecting this colB column. So far I am doing it like this:
dt1[,.(colB=unlist(colB)),by=.(colA,colC,colD)] # colA colC colD colB #1: A1 C1 D1 B1 #2: A2 C2 D2 B2a #3: A2 C2 D2 B2b #4: A3 C3 D3 B3
it does the job, but I don't like that I have to explicitly specify all other column names in by= . Is there a better way to do this?
(I'm sure he already answered elsewhere, but I could not find him so far)
PS Ideally, I would like to do without any external packages
r data.table
Vasily A
source share