将数据框作为参数传递给函数

时间:2019-02-01 13:37:44

标签: r function dataframe arguments

我正在编写一个函数来处理始终具有相同列名的巨大数据帧(逐行)中的数据。因此,我想将数据框本身作为函数传递,以从各个行中读取所需的信息。但是,当我尝试将其用作参数时,由于某种原因我无法从中读取信息。

数据框:

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 :(得分:1)

这是一种方法:

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)
})