[R] Assign a list to one column of data frame

Marlin JL.M marlin- at gmx.cn
Sun Dec 11 04:18:25 CET 2016


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!



More information about the R-help mailing list