Используйте lapply для работы с содержимым списков


Я должен разбить для каждого фрейма данных содержимое столбца mod, Когда | присутствует. Найдите мой код ниже. Я хочу использовать lapply, но это не работает. Другие предложения все еще хороши

prot<-rep('AAAA', times=5)
mod<-c("[5] C(+57.02)", "[5] C(+57.02|[5] C(+57.02))", "[5] C(+57.02)", "[55] C(+57.02|[55] C(+57.02))", "f36")
FramA<-data.frame(prot, mod)
FramA["mod"] <- lapply(FramA["mod"], as.character)
outdm<-list(FramA, FramA)
somelistmod <- lapply(outdm, function(x) strsplit(outdm[[x]]$mod, split = "\|"))

Это ошибка, которую я получаю

Error in outdm[[x]] : invalid subscript type 'list'
Called from: strsplit(outdm[[x]]$mod, split = "\|")
Browse[1]> 
1 2

1 ответ:

Если мы используем анонимный вызов функции, то мы можем извлечь столбец 'mod' с помощью x$mod или x[["mod"]]. Здесь мы проходим через list 'outdm', который является list из data.frame s. анонимная функция x представляет данные.объект кадра

lapply(outdm, function(x) strsplit(x$mod, split = "\\|"))