R column assignment fails for lists
On May 3, 2016, at 4:13 PM, Yasir Suhail <yasir.suhail at gmail.com> 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, ",")
Re-assignment works fine for columns 1 and 2, but fails for column 3. If a is a valid object, the assignment should work.
Try working with a 3 row dataframe. Then your misconceptions about how this proposed assignment will be more prominent because the dimensions would be wrong. Here's an alternate approach:
a <- data.frame(a=c(1,2,3), b=c(2,3,4), c=c("a,b","c,d", "e,f"), stringsAsFactors = F)
strsplit(a$c, ",")
[[1]] [1] "a" "b" [[2]] [1] "c" "d" [[3]] [1] "e" "f"
do.call(rbind, strsplit(a$c, ",") )
[,1] [,2] [1,] "a" "b" [2,] "c" "d" [3,] "e" "f"
str(cbind(a[-3] , do.call(rbind, strsplit(a$c, ",") ) ,stringsAsFactors=FALSE) )
'data.frame': 3 obs. of 4 variables: $ a: num 1 2 3 $ b: num 2 3 4 $ 1: chr "a" "c" "e" $ 2: chr "b" "d" "f"
David.
>
>> 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]]
>
> ______________________________________________
> R-help at 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.
David Winsemius
Alameda, CA, USA