如何在R中创建元组列表或字典

2o7dmzc5  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(188)

我有一点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:object 'my_list' not found
我想让它打印类别(水果和蔬菜),然后是该类别中的项目。
除了很难找到一个简单的答案来创建一个元组列表(我想我在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)`

jtw3ybtb

jtw3ybtb1#

您可能希望将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


实际上,根据您的需要,使用print(my_list)打印它就足够了,或者如果您像这样将其输入到R控制台:

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

相关问题