incorrect number of subscripts on matrix in R -


so, have list of data frames, named "d1.txt", "d2.txt"................"d45.txt". each of file contains2 columns , each file has 1000's of rows`.

i trying add new column each of data frame in list, following code, shows error incorrect number of subscripts on matrix.

the code using is,

l <- lapply(seq_along(l), function(i) {      l[[i]][, paste0('df', i)] <-  1     l[[i]]  }) 

where l name of list containing data frames.

why error coming? thanks! :)

edit: reprdoucible example:

# create dummy data l <- replicate(5, expand.grid(1:10, 1:10)[sample(100, 10), ], simplify=false)  # add column each data.frame in l.  # indicate presence of pair when merge. l <- lapply(seq_along(l), function(i) {    l[[i]][, paste0('df', i)] <-  1   l[[i]]  }) 

i think when read in "d1.txt", "d2.txt"................"d45.txt" files converted matrices , why particular loop fails. i'll use example:

l <- replicate(5, expand.grid(1:10, 1:10)[sample(100, 10), ], simplify=false) 

if use class(l[[1]]) pick out first element of list output [1] "data.frame" if use loop on list contains data.frames see no error , give want. if transform elements in list matrices:

for(i in seq_along(l)){      l[[i]] <- as.matrix(l[[i]]) } 

and check class(l[[1]]) output [1] "matrix". if use loop on l contains matrices get:

> l <- lapply(seq_along(l), function(i) {  +   l[[i]][, paste0('df', i)] <-  1 +     l[[i]]  +     }) error in `[<-`(`*tmp*`, , paste0("df", i), value = 1) :    subscript out of bounds 

hence, can either make sure when read in files coerced data.frames, use @richards solution, or read in files , coerce them data.frames via

 for(i in seq_along(l)){     l[[i]] <- as.data.frame(l[[i]]) } 

and use loop.


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -