У меня есть таблица данных, которая содержит наблюдения персонажей:
library(data.table)
library(stringr)
DT = data.table(strings = c('AAABD', 'BBDA', 'AACBDAA', 'ABACD'))
Я хотел бы создать переменную, которая будет содержать подсчеты 'A', 'AA' и 'AAA' в каждом наблюдении каксписок.Для этого я создал функцию foo:
foo <- function(str) {
n <- str_count(str, 'A')
n2 <- str_count(str, 'AA')
n3 <- str_count(str, 'AAA')
df <- list('n' = n, 'n2' = n2, 'n3' = n3)
return(df)
}
Я применяю эту функцию к DT, чтобы создать новую переменную для наблюдения за количеством в виде списка:
DT[, count := foo(strings)]
Когда я это делаю, Я получаю эту ошибку:
Warning message:
In `[.data.table`(DT, , `:=`(counts, foo(strings))) :
Supplied 3 items to be assigned to 4 items of column 'counts' (recycled leaving remainder of 1 items).
Возвращенная таблица данных содержит списки переменных подсчета размера 4 вместо размера 3 и не точно отражает количество 'A', 'AA' и 'AAA'для каждой строки наблюдения в переменной strings
.Как я могу назначить список в качестве наблюдения в таблице данных?