Измените столбец в списке фреймов данных и сохраните фрейм данных changde вместо вывода изменений с применением функций - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь изменить содержание определенного c кулмна в списке фреймов данных в R, который был сконструирован так:

# Generating a filelist for all summary.txt files that are 3 subdirectories deep from the pwd
filelist = grep(Sys.glob(paste(getwd(), "/*/*/*/*.txt", sep = "")),pattern = "summary.txt", invert = TRUE, value = TRUE )


# Reading in all data files
cazys = lapply(filelist, read.csv, header = TRUE, sep = "\t")

типичный один из фреймов данных будет выглядеть следующим образом :

fam     group     Functions
AA2     3         1.11.1.13:70,

Я хочу разделить столбец «Функции» на «:», чтобы удалить «: 70» и аналогичные для каждого кадра данных в списке. Я пробовал следующее:

# Correcting the EC number column
fixed_EC = lapply(cazys, function(x){
  x$Functions = strsplit(as.character(x$Functions), ":", fixed = TRUE)[[1]][1]
} )

Но это только возвращает результат strplit, а не alterd dataframe. однако когда я использую эту команду за пределами apply, она дала желаемые результаты. Как я могу заставить это работать внутри apply функции?

1 Ответ

0 голосов
/ 11 февраля 2020

Добавление return(x) в ваш текущий подход должно решить эту проблему. Однако здесь используется другой подход с использованием регулярных выражений, который удаляет все, что находится после ":" в столбце Functions.

fixed_EC <- lapply(cazys, function(x) 
            transform(x, Functions = sub(':.*', '', Functions)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...