首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将嵌套列表的第一个元素绑定到嵌套列表的后续元素

将嵌套列表的第一个元素绑定到嵌套列表的后续元素
EN

Stack Overflow用户
提问于 2019-02-22 02:54:50
回答 1查看 99关注 0票数 1

我有一个嵌套列表,我希望将每个列表的第一个元素绑定到该嵌套列表的其余元素。(对整个集合中的每个列表执行此操作)

以下是前两个更高级别的列表。目标是输出一个包含两列的数据帧。列1是第一行,列2是后续行。

简化版:

代码语言:javascript
复制
list(c("Location1", 
       "Location1_Bid1", 
       "Location1_Bid2", 
       "Location1_Bid3"), 
     c("Location2", 
     "Location2_Bid1", 
     "Location2_Bid2", 
     "Location2_Bid3"),
     c("Location3", 
     "Location3_Bid1", 
     "Location3_Bid2", 
     "Location3_Bid3",
     "Location3_Bid4")
     , c("Location4", 
     "Location4_Bid1", 
     "Location4_Bid2"))

例如:

代码语言:javascript
复制
Location        |  Bid
"Location1"     | "Location1_Bid1"
"Location1"     | "Location1_Bid2"
"Location1"     | "Location1_Bid3"
"Location2"     | "Location2_Bid1"
"Location2"     | "Location2_Bid2"
"Location2"     | "Location2_Bid3"
"Location3"     | "Location3_Bid1"
"Location3"     | "Location3_Bid2"
"Location3"     | "Location3_Bid3"
"Location3"     | "Location3_Bid4"
"Location4"     | "Location4_Bid1"
"Location4"     | "Location4_Bid2"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 04:06:46

编写一个执行所需操作的函数,并使用lapply对每个列表项执行此操作:

代码语言:javascript
复制
foo = function(x) cbind(x[1], x[-1])
result = lapply(your_list, foo)

将您的简单示例称为" simple ":

代码语言:javascript
复制
lapply(simple, foo)
# [[1]]
#      [,1]        [,2]            
# [1,] "Location1" "Location1_Bid1"
# [2,] "Location1" "Location1_Bid2"
# [3,] "Location1" "Location1_Bid3"
# 
# [[2]]
#      [,1]        [,2]            
# [1,] "Location2" "Location2_Bid1"
# [2,] "Location2" "Location2_Bid2"
# [3,] "Location2" "Location2_Bid3"
# 
# [[3]]
#      [,1]        [,2]            
# [1,] "Location3" "Location3_Bid1"
# [2,] "Location3" "Location3_Bid2"
# [3,] "Location3" "Location3_Bid3"
# [4,] "Location3" "Location3_Bid4"
# 
# [[4]]
#      [,1]        [,2]            
# [1,] "Location4" "Location4_Bid1"
# [2,] "Location4" "Location4_Bid2"

这些是矩阵,而不是数据帧。如果您想要取出数据帧,您可以使用cbind.data.frame而不只是cbind。您还可以像在示例输出中那样添加列名,例如

代码语言:javascript
复制
foo = function(x) cbind.data.frame(Location = x[1], Bid = x[-1])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54814280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档