2012-06-25 41 views
5

Có loại R tương đương với loại cấu trúc Matlab không?R tương đương với cấu trúc MATLAB?

Tôi có một vài vector được đặt tên và tôi cố gắng lưu trữ chúng trong một khung dữ liệu. Lý tưởng nhất, tôi chỉ đơn giản là sẽ truy cập vào một phần tử của một đối tượng và nó sẽ trả về các vectơ được đặt tên (giống như một cấu trúc trong Matlab). Tôi cảm thấy rằng việc sử dụng một khung dữ liệu không phải là điều đúng đắn để làm vì nó có thể lưu trữ các giá trị của các vectơ được đặt tên chứ không phải các tên khi chúng khác nhau từ một véc tơ này đến một véc tơ khác.

Nói chung, có thể lưu trữ một loạt các đối tượng khác nhau trong một đơn lẻ trong R không?

Chỉnh sửa: Như Joran đã nói tôi nghĩ rằng list sẽ thực hiện công việc.

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

Nếu tôi có một danh sách tên

name1 = 'vec1' 
name2 = 'vec2' 

là có cách nào cho người phiên dịch để hiểu rằng khi tôi sử dụng một tên biến như name1, tôi không đề cập đến tên biến nhưng để Nội dung của nó? Tôi đã thử get(name1) nhưng nó không hoạt động.

+3

Tôi lưu ý chính xác những gì bạn đang nói về Matlab, nhưng các tùy chọn trong R về cơ bản là: vectơ, danh sách, ma trận, khung dữ liệu hoặc môi trường (nếu bạn muốn sử dụng). Tôi đoán nếu bạn muốn có một danh sách. – joran

+0

@joran: [Cấu trúc Matlab] (http://www.mathworks.nl/help/techdoc/ref/struct.html) – Junuxx

+0

Tôi chắc chắn @joran là đúng (về một 'danh sách' là những gì bạn muốn), nhưng tôi bị nhầm lẫn bởi bit về "nhưng không phải là tên khi khác nhau từ một vector khác". Bạn đang đề cập đến tên nào? –

Trả lời

5

tôi vẫn có thể là sai lầm về những gì bạn đang cố gắng để làm, nhưng tôi nghĩ rằng đây là tốt nhất bạn sẽ nhận được trong điều kiện truy cập mỗi phần tử danh sách theo tên:

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

Cụ thể, bạn sẽ phải sử dụng [[ một cách rõ ràng.

+0

Và FWIW, 'get (ind, pos = l)' cũng hoạt động. (Tuy nhiên, không chắc chắn nơi nào tốt hơn 'l [[ind]]') –

+0

'get (ind, pos = l)' sẽ trả về '" a "' nhưng cách sử dụng nó để truy cập 'l $ a '? – Youcha

+0

@Youcha Không, thực sự, nó trả về cùng một thứ (hoặc ít nhất nó nên, và làm cho tôi). – joran

Các vấn đề liên quan