This is actually a bit subtle -- you need to carefully read the Help pages to see what's happening. Here's the explanation to the best of my understanding (corrections happily accepted if I've got it wrong!).
First, let's simplify: > z <- data.frame(a = 1:2, b = list(a = letters[1:2], b = letters[3:4])) > z a b.a b.b 1 1 a c 2 2 b d > ncol(z) [1] 3 So we ended up with a 3 column data.frame where it seems we should only have two, with the second being a list with 2 components. But that's not how it works. ?data.frame says: "... data.frame converts each of its arguments to a data frame by calling as.data.frame(optional = TRUE) " and ?as.data.frame says: "If a list is supplied, each element is converted to a column in the data frame." Hence when as.data.frame() is called on the second column, a 2 element list, it converts it into a 2 column data frame (of 2 rows each) thus giving 3 columns in all in the data frame, yielding the error you saw. Something like this is what also happens in your assignment, I assume. Jim's solution assigned a 1 element list which yielded what you wanted when as.data.frame converted it into a single column. I think.... Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Tue, May 3, 2016 at 6:48 PM, David Winsemius <[email protected]> wrote: > >> On May 3, 2016, at 4:13 PM, Yasir Suhail <[email protected]> wrote: >> >> Dear R developers and users, >> >> Consider the object : >> >>> a <- data.frame(a=c(1,2), b=c(2,3), c=c("a,b","c,d"), stringsAsFactors = F) >>> a$c <- strsplit(a$c, ",") > > You are the one who should "consider the object". Look at what strsplit(a$c, > ",") returns and then perhaps re-consider trying to assign it to a single > column. > >> >> Re-assignment works fine for columns 1 and 2, but fails for column 3. If a >> is a valid object, the assignment should work. >> >>> a[,1] <- a[,1] >>> a[,2] <- a[,2] >>> a[,3] <- a[,3] >> Warning message: >> In `[<-.data.frame`(`*tmp*`, , 3, value = list(c("a", "b"), c("c", : >> provided 2 variables to replace 1 variables >> >> [[alternative HTML version deleted]] > > And please reconsider also the format of your postings. > >> >> ______________________________________________ >> [email protected] mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > David Winsemius > Alameda, CA, USA > > ______________________________________________ > [email protected] mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ [email protected] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.

