我目前正在处理包含汽车零件数据的嵌套列表,下面是一个示例:
主要的挑战是这些列表是不规则的,这意味着我事先不知道各个分支上的嵌套深度。
我需要的是一种可扩展的方法来选择和操作嵌套列表每一层的数据,即更新价格、数量等。
简而言之,我发现自己无法想出一种能够处理不断变化的列表深度的方法。
解决此问题的一种可能且易于实现(但丑陋)的方法是形成所需操作的字符串表达式,然后使用 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="")))
但是,我不想诉诸于此,必须有更好的方法...我很感激任何建议。
我不知道您想要做的所有事情,但处理深度嵌套列表的有效方法是使用向量作为顶层的索引。 为此,您需要知道列表中名称的顺序,因此这对您来说可能不可行,但假设您这样做,您可以将示例代码替换为
# 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
如果您可以使用名称作为索引而不是数字索引来做到这一点,那就太好了,但您不能。