【问题标题】:R equivalent to the MATLAB structure?R相当于MATLAB的结构?
【发布时间】:2012-06-25 23:55:25
【问题描述】:

有没有等价于Matlab结构类型的R类型?

我有一些命名向量,我尝试将它们存储在数据框中。理想情况下,我会简单地访问对象的一个​​元素,它会返回命名向量(就像 Matlab 中的结构)。我觉得使用数据框不是正确的做法,因为它可以存储命名向量的值,但不能存储一个向量与另一个向量不同时的名称。

更一般地说,是否可以在 R 中将一堆不同的对象存储在一个单独的对象中?

编辑:正如 Joran 所说,我认为 list 可以完成这项工作。

l = list()
l$vec1 = namedVector1
l$vec2 = namedVector2
...

如果我有一个名字列表

name1 = 'vec1'
name2 = 'vec2'

解释器有什么方法可以理解当我使用像 name1 这样的变量名时,我指的不是变量名而是它的内容?我试过get(name1),但它不起作用。

【问题讨论】:

  • 我注意到您在 Matlab 中到底在说什么,但您在 R 中的选择基本上是:向量、列表、矩阵、数据框或(如果您想花哨的话)环境.如果你想要一个列表,我猜。
  • 我确定@joran 是正确的(关于list 是你想要的),但我对“但不是当从一个向量到其他”。你指的是什么名字?
  • @JoshO'Brien 我认为他的意思是行名不能在 data.frame 中的列之间有所不同。
  • 对于命名的使用 l[["vec1"]] 等

标签: r matlab


【解决方案1】:

我仍然可能对您尝试做的事情有误,但我认为这是按名称访问每个列表元素的最佳方法:

l <- list(a= 1:3,b = 1:10)
> ind <- "a"
> l[[ind]]
[1] 1 2 3

也就是说,您将不得不明确使用[[

【讨论】:

  • FWIW,get(ind, pos=l) 也可以。 (但不确定哪里会比 l[[ind]] 更好。)
  • get(ind, pos=l) 将返回 "a" 但如何使用它来访问 l$a
  • @Youcha 不,实际上,它返回相同的东西(或者至少它应该,并且对我有用)。
  • l[[1]] 返回 1 2 3 但 l["a"] 或 l[["a"]] 对我不起作用?确实如此,但在这里它没有: all_params
  • @babipsylon 尝试all_params &lt;- list(y = yearly_rental_costs_year_zero, a = actualisatiepercentage) 然后all_params[["a"]]。它应该产生所需的输出。
猜你喜欢
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多