Trong số Answer này, một alist()
được đề xuất như một phương tiện dễ dàng để tạo danh sách có các phần tử trống. Một trường hợp sử dụng cho điều này sẽ được xây dựng một danh sách phù hợp cho một cuộc gọi đến [
được sắp xếp qua do.call()
. Ví dụ:Tạo độ dài biến `alist()`
x <- matrix(1:6, ncol = 2)
do.call(`[`, alist(x, , 2)) ## extract column 2 of x
[1] 4 5 6
Các Đặc biệt Question khiến alist()
trả lời yêu cầu các thiết lập của các đối số rỗng tự động trên cơ sở của một đối tượng shortdim
.
Nếu ai biết có bao nhiêu kích thước là một trong hiện tại có thể làm
al <- alist(, ,) ## 3 arguments for a 2-d object
al[[1]] <- x
shortdim <- 1
al[[shortdim + 1]] <- 1:2 ## elements 1 & 2 of dim shortdim, plus all other dims
do.call(`[`, al)
> do.call(`[`, al)
[,1] [,2]
[1,] 1 4
[2,] 2 5
> x[1:2, ] ## equivalent too
[,1] [,2]
[1,] 1 4
[2,] 2 5
Một danh sách dài năng động có thể được tạo ra bởi vector()
, ví dụ:
ll <- vector(mode = "list", length = length(dim(x)) + 1)
Nhưng một alist
không thể được thực hiện bằng theo cách đó
> vector(mode = "alist", length = length(dim(x)) + 1)
Error in vector(mode = "alist", length = length(dim(x)) + 1) :
vector: cannot make a vector of mode 'alist'.
Có cách nào để tạokhôngcủa độ dài động có thể được điền vào sau này khi cần thiết?
Annoyingly, 'alist()' doesn Không tạo danh sách độ dài 1, nhưng 'alist (,)' tạo danh sách độ dài 2 .... –
Related (và chứa câu trả lời) [Chọn dọc theo một trong các tham số n trong mảng] (http: // stackoverflow .com/a/14502298/271616) –
Nếu một trong hai @JoshuaUlrich hoặc @ JoshO'Brien muốn đăng 'rep (danh sách (bquote()), n)' thành ngữ như một câu trả lời Tôi nghiêng để chấp nhận rằng như là một 'alist 'thực sự không có gì thuộc loại này, tôi s "danh sách", đó là những gì nó tạo ra. Nếu bạn không muốn tôi đăng nó như một câu trả lời. –