我有幾個資料幀(df1、df2、...、df1000),它們都采用嵌套串列格式并且具有完全相同的結構。訪問每個資料幀的資料很簡單:只需要??運行以下代碼行:
df1_data <- df1$CompactData$DataSet$Series
由于我有近一千個資料幀,因此我創建了一個包含這些 dfs 名稱的串列,以便在回圈中使用它們,這將允許我獲取所需的資料,如上例所示。但是,我一直無法找到答案,也無法自己找到解決方案。
list_of_names <- list(df1, df2, …, df1000)
for (df in length(list_of_names)) {
list_of_names[[df]] = list_of_names[[df]]$CompactData$DataSet$Series
}
本質上,我想要實作的是使用我真正需要的資料創建新的資料框。
任何幫助都感激不盡。
提前致謝!
uj5u.com熱心網友回復:
這有點亂,但您可以使用eval(parse()).
for(df in 1:length(list_of_names)) {
list_of_names[[df]] = eval(parse(text = paste0(list_of_names[[df]], '$CompactData$DataSet$Series')))
}
或者,如果您將資料框放在串列中,而不僅僅是名稱,則可以使用lapply()或map()。
# given list of data.frames, called df_list
df_sub <- lapply(df_list, function(x) x$CompactData$DataSet$Series)
df_sub然后將包含您想要的所有 data.frames 中的子集df_list。這種方法的優點是更容易管理 data.frames 串列,并且代碼更易于閱讀。
uj5u.com熱心網友回復:
如果我正確理解了您的資料,我會首先list對所有按順序命名的df1, df2, df3, ...
start_list = mget(paste0("df", 1:1000))
然后像你的回圈應該作業。我已經用(a)將變化的東西1:在1:length())回圈的建立,以及(b)遍歷輸入,而不是結果:
result = list()
for (df in 1:length(list_of_names)) {
result[[df]] = start_list[[df]]$CompactData$DataSet$Series
}
如果您需要比這更多的幫助,請分享您的資料的可重現樣本(這對于嵌套串列結構來說str(df1)可能很困難。這將是一個好的開始......)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371121.html
上一篇:測驗onErrorResume()SpringWebflux
下一篇:使用字符aaryas反轉字串
