如何高效操作 R 中嵌套列表的内容

问题描述 投票:0回答:1

我目前正在处理包含汽车零件数据的嵌套列表,下面是一个示例:

主要的挑战是这些列表是不规则的,这意味着我事先不知道各个分支上的嵌套深度。

我需要的是一种可扩展的方法来选择和操作嵌套列表每一层的数据,即更新价格、数量等。

简而言之,我发现自己无法想出一种能够处理不断变化的列表深度的方法。

解决此问题的一种可能且易于实现(但丑陋)的方法是形成所需操作的字符串表达式,然后使用 eval(parse(text=""))。

看起来像这样:

target.string <- "Autoparts$L3_make$BMW$L2_components$Engine§L1_type" 
parts.data<-"hybrid 3i"

eval(parse(text=paste("target.string", "<-", parts.data, sep="")))

但是,我不想诉诸于此,必须有更好的方法...我很感激任何建议。

r nested-lists list-manipulation
1个回答
0
投票

我不知道您想要做的所有事情,但处理深度嵌套列表的有效方法是使用向量作为顶层的索引。 为此,您需要知道列表中名称的顺序,因此这对您来说可能不可行,但假设您这样做,您可以将示例代码替换为

# Your desired index into autoparts needs to be by number:
#          L3_make$BMW$L2_components$Engine§L1_type
index <- c(5,      1,  5,            1,     1)

Autoparts[[index]] <- parts.data

如果您可以使用名称作为索引而不是数字索引来做到这一点,那就太好了,但您不能。

© www.soinside.com 2019 - 2024. All rights reserved.