?data.frame says: "If a list or data frame or matrix is passed to data.frame it is as if each component or column had been passed as a separate argument (except for matrices of class "model.matrix" and those protected by I). "
So doing what Help says to do seems to do what you asked: > df <- data.frame(a=1:3,b=letters[1:3]) > df a b 1 1 a 2 2 b 3 3 c ## add a list column, protected by "I()" > df$new <- I(list(1:5,g = "foo", abb = matrix(runif(6),nr=3))) ## works as advertised > df a b new 1 1 a 1, 2, 3,.... 2 2 b foo 3 3 c 0.080349.... > df$new [[1]] [1] 1 2 3 4 5 $g [1] "foo" $abb [,1] [,2] [1,] 0.08034915 0.83671591 [2,] 0.43938440 0.06067429 [3,] 0.88196881 0.33461234 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 Sat, Dec 10, 2016 at 7:18 PM, Marlin JL.M <marl...@gmx.cn> wrote: > Dear all, > > I want to assign a list to one column of data.frame where the name of the > column > is a variable. I tried the following: > > Using R version 3.3.2 > >> df <- iris[1:3, ] >> df > # Sepal.Length Sepal.Width Petal.Length Petal.Width Species > # 1 5.1 3.5 1.4 0.2 setosa > # 2 4.9 3.0 1.4 0.2 setosa > # 3 4.7 3.2 1.3 0.2 setosa > >> mylist <- list(c(1,2,3),c(1),c()) >> mylist > # [[1]] > # [1] 1 2 3 > # > # [[2]] > # [1] 1 > # > # [[3]] > # NULL > >> n1 <- 'new1' >> df$n1 <- mylist > >> n2 <- 'new2' >> df[,n2] <- mylist > # Warning message: > # In `[<-.data.frame`(`*tmp*`, , "new4", value = list(c(1, 2, 3), : > # provided 3 variables to replace 1 variables > >> n3 <- 'new3' >> df[,n3] <- I(mylist) > # Warning message: > # In `[<-.data.frame`(`*tmp*`, , "new3", value = list(c(1, 2, 3), : > # provided 3 variables to replace 1 variables > >> eval(parse(text = paste0("df$","new4","<- mylist"))) > >> df > # Sepal.Length Sepal.Width Petal.Length Petal.Width Species n1 new2 new3 > new4 > # 1 5.1 3.5 1.4 0.2 setosa 1, 2, 3 1 > 1 1, 2, 3 > # 2 4.9 3.0 1.4 0.2 setosa 1 2 > 2 1 > # 3 4.7 3.2 1.3 0.2 setosa NULL 3 > 3 NULL > > > The "eval" works correctly, however, if I want to avoid using "eval", what > should I do? > > Thanks! > > ______________________________________________ > R-help@r-project.org 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. ______________________________________________ R-help@r-project.org 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.