Передача данных в качестве аргумента функции - PullRequest
0 голосов
/ 01 февраля 2019

Я пишу функцию для обработки данных из огромного фрейма данных (строка за строкой), который всегда имеет одинаковые имена столбцов.Поэтому я хочу передать сам фрейм данных как функцию для считывания необходимой мне информации из отдельных строк.Однако, когда я пытаюсь использовать его в качестве аргумента, я по какой-то причине не могу прочитать информацию из него.

Фрейм данных:

DF <- data.frame("Name" = c("A","B"), "SN" = 1:2, "Age" = c("21,34,456,567,23,123,34", "15,345,567,3,23,45,67,76,34,34,55,67,78,3"))

Мой код:

List <- do.call(list, Map(function(DT) {
  DT <- as.data.frame(DT)
  aa <- as.numeric(strsplit(DT$Age, ","))
  mean.aa <- mean(aa)
},
DF))

Пытаясь это, я получаю список с именами столбцов, но все значения равны NULL.

Ожидаемый вывод: Мой ожидаемый вывод - это список, длина которого равна числу строк во фрейме данных.Под каждым индексом списка должен быть другой список с возрастом соответствующей строки (также другие материалы из той же строки таблицы данных, позже).

DF <- apply(data.frame("Name" = c("A","B"), "SN" = 1:2, "Age" = c("21,34,456,567,23,123,34", "15,345,567,3,23,45,67,76,34,34,55,67,78,3"), "mean.aa" = c(179.7143, 100.8571)), 1, as.list)

Что я делаю не так?

1 Ответ

0 голосов
/ 01 февраля 2019

Вот один из способов:

DF <- data.frame("Name" = c("A","B"), "SN" = 1:2, "Age" = c("21,34,456,567,23,123,34", "15,345,567,3,23,45,67,76,34,34,55,67,78,3"))

apply(DF, 1, function(row){
  aa <- as.numeric(strsplit(row["Age"], ",")[[1]])
  row["mean.aa"] <- mean(aa)
  as.list(row)
})
...