Tôi không chắc chắn rằng tôi có chính xác những gì bạn đang yêu cầu, nhưng tôi đã tìm những gì bạn muốn là một cái gì đó như sau:
Cho một giao diện người dùng với một biến, nói một mảng có thể thay đổi trong kích thước, và một biến (phụ thuộc) khác, đại diện cho một chỉ mục vào mảng hiện tại mà bạn muốn sử dụng từ giao diện người dùng đến chỉ mục vào mảng. Tuy nhiên, bạn không muốn sửa bố cục biến chỉ mục trong giao diện người dùng, vì nó phụ thuộc vào thời gian chạy, trên kích thước của mảng, có thể thay đổi bằng biến thứ hai.
Dưới đây là một thao tác, trong đó có giao diện người dùng có biến kiểm soát chỉ mục, cập nhật động trên giao diện người dùng khi kích thước của mảng thay đổi.
Tôi đã sử dụng SetterBar cho chỉ mục (biến phụ thuộc) nhưng bạn cũng có thể sử dụng thanh trượt. SetterBar làm cho nó rõ ràng hơn trên giao diện người dùng những gì đang thay đổi.
Khi bạn thay đổi độ dài của mảng, biến điều khiển chỉ mục sẽ tự động cập nhật chỉ mục tối đa cho phép được sử dụng để phù hợp với độ dài hiện tại của mảng.
Khi bạn thu hẹp mảng, chỉ mục cũng sẽ co lại.
Tôi không chắc chắn nếu điều này là những gì bạn muốn, nhưng nếu điều đó, bạn có thể điều chỉnh phương pháp này để phù hợp với vấn đề của bạn
Manipulate[
Grid[{
{Style[Row[{"data[[", i, "]]=", data[[i]]}], 12]},
{MatrixForm[data], SpanFromLeft}
},
Alignment -> Left, Spacings -> {0, 1}
],
[email protected][{
{Text["select index into the array = "],
SetterBar[Dynamic[i, {i = #} &], Range[1, Length[data]],
ImageSize -> Tiny,
ContinuousAction -> False]
},
{
Text["select how long an array to build = "],
Manipulator[
Dynamic[n, {n = #; If[i > n, i = n];
data = Table[RandomReal[], {n}]} &],
{1, 10, 1}, ImageSize -> Tiny, ContinuousAction -> False]
, Text[Length[data]], SpanFromLeft
}
}, Alignment -> Left
],
{{n, 2}, None},
{{i, 2}, None},
{{data, Table[RandomReal[], {2}]}, None},
TrackedSymbols -> {n, i}
]


cập nhật 8: 30 PM fyi, chỉ cần sửa một mã ở trên để thêm một logic bổ sung cần thiết.
Như vậy, cả hai danh sách đều có cùng độ dài. Có lẽ sử dụng 'listlength [" subA "] = 5; listlength ["subB"] = 9; Chức năng [subID, pointSO [subID] = RandomInteger [{1, 4}, {listlength [subID], 2}]]/@ {"subA", "subB"}; 'minh họa vấn đề phát sinh Thao tác đơn lẻ. – kglr
Giải pháp của tôi hoạt động tốt với các danh sách có độ dài khác nhau. Người thao túng cho tôi điều chỉnh động. Tôi nghĩ rằng các porblem chính có thể là từ không xác định một giá trị mặc định cho i. – Timo
... Bạn cần đặt rõ ràng 'ControlType -> SetterBar'in Thao tác bên trong để tránh các điều khiển khác nhau trong thao tác bên trong cho' subA' và 'subB'. – kglr