У меня есть список фреймов данных, в которых я хочу прочитать определенный атрибут, а затем добавить его в качестве первой строки соответствующего фрейма данных, которому принадлежит этот атрибут.
В приведенных ниже данных я хочучитать DP.UniqueId
динамически, что можно сделать следующим образом, но не уверен, как добавить его в качестве первой строки фрейма данных, к которому принадлежит DP.UniqueId
, чтобы получить вывод, как показано в примере вывода.
library(purrr)
new_data %>% map(pluck, 1, attr_getter("SpotfireColumnMetaData"), "DP.UniqueId")
# $A
# [1] "A-024"
# $B
# [1] "B-025"
Над кодом кредита @ MrFlick в качестве ответа на этот вопрос .
Это я хочу сделать динамически, так как большие данные, которые у меня есть, содержат тысячи фреймов данных всписок.
Данные
new_data <- list(A = structure(list(AA = structure(5.49485, SpotfireColumnMetaData = list(
DP.TestNumber = "111", DP.Type = "", DP.TestName = "ABC",
DP.Info = "PTR", DP.TestUnit = "Mohm", DP.Statistic = "raw",
DP.Program = "", DP.ScaleFactor = 0L, DP.FilteredOutCells = 0L,
Limits.Prod.Lower = 2, Limits.Prod.Target = NaN, Limits.Prod.Upper = 7,
Limits.Spec.Lower = -Inf, Limits.Spec.Target = NaN, Limits.Spec.Upper = Inf,
Limits.Outlier.Lower = -Inf, Limits.Outlier.Target = NaN,
Limits.Outlier.Upper = Inf, Limits.Whatif.Lower = -Inf, Limits.Whatif.Target = NaN,
Limits.Whatif.Upper = Inf, DP.ParamType = "PARAMETRIC", DP.BlockId = "",
DP.Scratch = "", DP.ColumnId = "", Dp.BaseName = "", DP.FTR.testtxt = "",
DP.PTR.testtxt = "A -1 <> B", DP.DTR.textdat = "",
DP.MPR.pinnum = "0", DP.UniqueId = "A-024"))), class = "data.frame", row.names = c(NA,-1L)),
B = structure(list(BB = structure(0.08707662, SpotfireColumnMetaData = list(
DP.TestNumber = "112", DP.Type = "", DP.TestName = "ABC",
DP.Info = "PTR", DP.TestUnit = "Mohm", DP.Statistic = "raw",
DP.Program = "", DP.ScaleFactor = 0L, DP.FilteredOutCells = 0L,
Limits.Prod.Lower = 2, Limits.Prod.Target = NaN, Limits.Prod.Upper = 7,
Limits.Spec.Lower = -Inf, Limits.Spec.Target = NaN, Limits.Spec.Upper = Inf,
Limits.Outlier.Lower = -Inf, Limits.Outlier.Target = NaN,
Limits.Outlier.Upper = Inf, Limits.Whatif.Lower = -Inf, Limits.Whatif.Target = NaN,
Limits.Whatif.Upper = Inf, DP.ParamType = "PARAMETRIC", DP.BlockId = "",
DP.Scratch = "", DP.ColumnId = "", Dp.BaseName = "", DP.FTR.testtxt = "",
DP.PTR.testtxt = "A -1 <> B", DP.DTR.textdat = "",
DP.MPR.pinnum = "0", DP.UniqueId = "B-025"))), class = "data.frame", row.names = c(NA,-1L)))
Пример вывода
$A
AA
1 A-024
2 5.49485
$B
BB
1 B-025
2 0.08707662