提问人:guy404 提问时间:11/10/2023 更新时间:11/10/2023 访问量:53
如何在R中制作元组或字典的列表
How to make a list of tuples or dictionary in R
问:
我在 python 编程方面有一点经验,但刚刚开始了每台计算机上都有 R 的工作,我需要至少使用它一段时间,直到我对 python 的请求通过系统工作。我正在尝试编写一段代码来遍历类别和该类别中的项目。
我的第一次尝试是这样的:
`my_list <- list(('fruit', ('apple', 'banana', 'orange')), ('vegetables', ('carrot', 'leek', 'cabbage')))
for (category in my_list) {
print(category[1])
for (item in category[2]) {
print(item)
}
}`
我的结果是: my_list错误:找不到对象“my_list”
我希望它打印类别(水果和蔬菜),然后是该类别中的项目。
除了很难找到创建元组列表的简单答案(我想我发现 R 中不存在字典)之外,我真的很困惑为什么程序找不到my_list。
作为参考,等效的 python 代码为: a)
`my_dict = {'fruit': ('apple', 'banana', 'orange'),
'vegetables': ('carrot', 'leek', 'cabbage')}
for k in my_dict:
print(k)
for item in my_dict[k]:
print item
`
或 b)
`my_list = [('fruit', ('apple', 'banana', 'orange')),
('vegetables', ('carrot', 'leek', 'cabbage'))]
for category in my_list:
print(category[0])
for item in category[1]:
print(item)`
答:
1赞
G. Grothendieck
11/10/2023
#1
您可能希望像这样定义为字符向量的命名列表,我们将使用此定义。(最后,我们展示了如何转换为这种形式。my_list
my_list <- list(
fruit = c('apple', 'banana', 'orange'),
vegetables = c('carrot', 'leek', 'cabbage')
)
在这种情况下,此代码有效:
for(category in names(my_list)) {
cat(category, "\n")
for(item in my_list[[category]])
cat("-", item, "\n")
}
## fruit
## - apple
## - banana
## - orange
## vegetables
## - carrot
## - leek
## - cabbage
事实上,根据你想要的内容,只需使用或将其键入到 R 控制台中即可打印它,如下所示:print(my_list)
my_list
## $fruit
## [1] "apple" "banana" "orange"
##
## $vegetables
## [1] "carrot" "leek" "cabbage"
如果您已经在下面,则可以将其转换为与此答案顶部相同的列表。my_list2
my_list3
my_list
my_list2 <- list(
c('fruit', 'apple', 'banana', 'orange'),
c('vegetables', 'carrot', 'leek', 'cabbage')
)
my_list3 <- lapply(my_list2, "[", -1)
names(my_list3) <- sapply(my_list2, "[[", 1)
identical(my_list, my_list3)
## [1] TRUE
评论
my_list
()
c()
my_list <- list(list('fruit', c('apple', 'banana', 'orange')), list('vegetables', c('carrot', 'leek', 'cabbage')))
my_list <- list(fruit=c('apple', 'banana', 'orange'), vegetables= c('carrot', 'leek', 'cabbage'))
my_list <-
Error: unexpected ',' in "my_list <- list(('fruit',"