r - 将数据框作为参数传递给函数
问题描述
我正在编写一个函数来处理来自一个巨大的数据帧(逐行)的数据,该数据帧总是具有相同的列名。因此,我想将数据框本身作为函数传递,以从各个行中读出我需要的信息。但是,当我尝试将其用作论据时,由于某种原因,我无法从中读取信息。
数据框:
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)
我究竟做错了什么?
解决方案
这是一种方法:
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)
})
推荐阅读
- azure - Azure 在创建 VM 时分配角色
- azure - 与 Azure VM 的网络连接速度很慢
- odoo - 通过 Studio 添加的新模型导致计算字段上出现 KeyError
- docker - Dokku keycloak 重定向过多
- image - 任何图像文件格式都支持负浮点数吗?
- typo3 - 自 v9 起 TYPO3 中特定于语言的 TypoScript 设置
- flutter - Flutter Azure AD Auth:如何显示在登录到另一个屏幕期间检索到的用户电子邮件和名称
- javascript - React 和 JQuery 插件( $ 未定义)
- c# - 是否可以编辑已经存在的属性集函数调用的 CIL (MSIL) 指令?
- anylogic - 在 AnyLogic 的 Main 中的函数中引用“this”