gpt4 book ai didi

r - 从 R 中的多个列表对象中提取相同字段的值

转载 作者:行者123 更新时间:2023-12-05 01:13:37 25 4
gpt4 key购买 nike

我有一个列表对象如下:

structure(list(bga_u = structure(list(buy_target_price = numeric(0), 
sell_target_price = numeric(0), units_holding = 0, tx_record = structure(list(
`2010-12-01` = structure(list(buy_date = structure(14944, class = "Date"),
offer_price = 40.58, buy_unit = 3.15931809278285,
status = "hold"), .Names = c("buy_date", "offer_price",
"buy_unit", "status")), `2011-01-03` = structure(list(
buy_date = structure(14977, class = "Date"), offer_price = 42.2,
buy_unit = 3.03803621339166, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status")), `2011-02-01` = structure(list(
buy_date = structure(15006, class = "Date"), offer_price = 42.59,
buy_unit = 3.01021667539629, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status")), `2011-03-01` = structure(list(
buy_date = structure(15034, class = "Date"), offer_price = 43.37,
buy_unit = 2.95607858439309, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status")), `2011-04-01` = structure(list(
buy_date = structure(15065, class = "Date"), offer_price = 43.35,
buy_unit = 2.95744240380919, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status")), `2011-05-03` = structure(list(
buy_date = structure(15097, class = "Date"), offer_price = 44.53,
buy_unit = 2.87907316876551, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status"))), .Names = c("2010-12-01",
"2011-01-03", "2011-02-01", "2011-03-01", "2011-04-01", "2011-05-03"
))), .Names = c("buy_target_price", "sell_target_price",
"units_holding", "tx_record")), bwg_u = structure(list(buy_target_price = numeric(0),
sell_target_price = numeric(0), units_holding = 0, tx_record = structure(list(
`2010-11-02` = structure(list(buy_date = structure(14915, class = "Date"),
offer_price = 63.15, buy_unit = 2.03016830095215,
status = "hold"), .Names = c("buy_date", "offer_price",
"buy_unit", "status")), `2010-12-01` = structure(list(
buy_date = structure(14944, class = "Date"), offer_price = 64.19,
buy_unit = 1.99727571592348, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status")), `2011-09-01` = structure(list(
buy_date = structure(15218, class = "Date"), offer_price = 69.29,
buy_unit = 1.85026884406304, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status")), `2011-10-03` = structure(list(
buy_date = structure(15250, class = "Date"), offer_price = 58.05,
buy_unit = 2.20852934031229, status = "hold"), .Names = c("buy_date",
"offer_price", "buy_unit", "status"))), .Names = c("2010-11-02",
"2010-12-01", "2011-09-01", "2011-10-03"))), .Names = c("buy_target_price",
"sell_target_price", "units_holding", "tx_record"))), .Names = c("bga_u",
"bwg_u"))

这是一个“列表中的列表”对象,由 3 个级别组成:
  • 第 1 级:所有基金的名称(此处有 2 个基金:bga _u 和 bwg_u)
  • 级别 2:目标买入价;目标卖出价;和单位控股
  • 级别 3:特定交易的详细信息(例如购买的单位)

  • 如果该特定交易的状态仍为“持有”,则存储在级别 2 中的“持有单位”是通过将级别 3 中每笔交易的“买入单位”相加来计算的。

    如何计算每只基金的“单位持有量”并放入第 2 级?

    (我使用 R 2-3 年,但我是 list 对象的新手,我可能在概念上对 list 有误。)

    最佳答案

    这是一种方法(假设对象是名称 dat ):

    lapply(dat, function(x) 
    "[[<-"(x, "units_holding",
    sum(sapply(x[["tx_record"]], function(y)
    ifelse(y[["status"]] == "hold", y[["buy_unit"]], 0)))))

    在这个命令中, lapplysapply分别用于迭代列表的第一级和第二级。

    笔记。这会创建一个新对象,您可能希望将其分配给新变量(或覆盖旧变量)。

    关于r - 从 R 中的多个列表对象中提取相同字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14052612/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com