Пусть этот код:Извлечь список частей в векторе с помощью plyr :: mutate?
foo <- data.frame(cols_val=c("NA", "1:2:3", "4:5:6"))
library(plyr)
foo <- mutate(
foo,
cols_list = str_split(cols_val, ":"),
one = cols_list[1],
two = cols_list[2])
Я хотел foo$one
быть c(NA, "1", "4")
и foo$two
быть c(NA, "2", "5")
. То есть, чтобы разделить значения cols_val
на отдельные столбцы кадра данных.
Однако cols_list
представляет собой список, и one == cols_list[1]
является первым элементом этого списка (== cols_list[[1]]
), в то время как two == cols_list[1]
. Итак, я не знаю, как правильно это сделать.
Помощь?
> foo
cols_val cols_list one two
1 NA NA NA 1, 2, 3
2 1:2:3 1, 2, 3 NA 1, 2, 3
3 4:5:6 4, 5, 6 NA 1, 2, 3
> str(foo$cols_list)
List of 3
$ : chr "NA"
$ : chr [1:3] "1" "2" "3"
$ : chr [1:3] "4" "5" "6"
Попробуйте 'library (splitstackshape); cSplit (foo, 'cols_val', ":") ' – akrun