Để sử dụng tính năng hiểu danh sách kiểu Python với các kiểu liệt kê, chẳng hạn như danh sách được liệt kê, một cách là cài đặt gói Danh sách hiểu LC
(phát triển 2018) và gói itertools (phát triển 2015).
Liệt kê các hiểu biết trong R
Bạn có thể tìm thấy LC
gói ở đây .
install.packages("devtools")
devtools::install_github("mailund/lc")
Thí dụ
> library(itertools); library(lc)
> lc(paste(x$index, x$value), x=as.list(enumerate(rnorm(5))), )
[[1]]
[1] "1 -0.715651978438808"
[[2]]
[1] "2 -1.35430822605807"
[[3]]
[1] "3 -0.162872340884235"
[[4]]
[1] "4 1.42909760816254"
[[5]]
[1] "5 -0.880755983937781"
trong đó cú pháp lập trình chưa rõ ràng và bóng bẩy như trong Python nhưng hoạt động về mặt chức năng và trợ giúp của nó nêu rõ:
"Cú pháp như sau: lc (expr, danh sách, vị từ) trong đó expr là một số biểu thức được đánh giá cho tất cả các phần tử trong danh sách, trong đó danh sách là một hoặc nhiều danh sách được đặt tên, trong đó chúng được chỉ định bằng tên và tên biểu thức = list_expr và trong đó các vị từ là các biểu thức sẽ được đánh giá thành giá trị boolean. Ví dụ: để lấy danh sách tất cả các số chẵn, bình phương, từ danh sách x, chúng ta có thể viết lc (x ** 2, x = x, x% % 2 == 0). Kết quả của lệnh gọi tới lc là một danh sách được xây dựng từ các biểu thức trong expr, cho tất cả các phần tử trong danh sách đầu vào trong đó các vị từ đánh giá là true. "
nơi lưu ý rằng bạn có thể để trống các vị từ, ví dụ trong ví dụ trên.
Bảng kê và bảng kê kiểu Python
Bạn có thể sử dụng itertools của R rất giống với itertools của Python, thêm trong Cran tại đây
library(itertools)
nơi được mô tả
"Các công cụ khác nhau để tạo trình vòng lặp, nhiều công cụ được tạo mẫu sau các hàm trong mô-đun itertools Python và những công cụ khác được tạo mẫu sau các hàm trong gói 'snow'."
Thí dụ. sự liệt kê
> for (a in as.list(enumerate(rnorm(5)))) { print(paste(a$index, "index:", a$value))}
[1] "1 index: 1.63314811372568"
[1] "2 index: -0.983865948988314"
[1] "3 index: -1.27096072277818"
[1] "4 index: 0.313193212706331"
[1] "5 index: 1.25226639725357"
Thí dụ. liệt kê với ZIP
> for (h in as.list(izip(a=1:5, b=letters[1:5]))) { print(paste(h$a, "index:", h$b))}
[1] "1 index: a"
[1] "2 index: b"
[1] "3 index: c"
[1] "4 index: d"
[1] "5 index: e"
expand.grid(i=10:20,j=10:20)