Điều này thật điên rồ và chỉ tò mò trí tuệ: Tôi có thể chạy một hàm theo R theo cách sao cho sau khi hàm hoàn tất tôi có thể nhận tất cả các biến được tạo khi hàm được thực hiện? Vì vậy, khả năng nhìn vào một chức năng ngay trước khi nó trở lại? Tôi không có nghĩa là nhập chức năng vào chế độ gỡ lỗi.R - nhận tất cả các biến được tạo từ cuộc gọi hàm
12
A
Trả lời
18
Tôi không chắc chắn nếu đây là những gì bạn muốn, nhưng có thể đóng. Bạn có thể nhúng một biểu thức trọng tài trong các chức năng hiện có bằng cách trace
:
> trace(lm, exit = function().last_env <<- parent.frame())
Tracing function "lm" in package "stats"
[1] "lm"
> lm(y~x, data.frame(x=1:10, y=10:1))
Tracing lm(y ~ x, data.frame(x = 1:10, y = 10:1)) on exit
Call:
lm(formula = y ~ x, data = data.frame(x = 1:10, y = 10:1))
Coefficients:
(Intercept) x
11 -1
> ls(.last_env)
[1] "cl" "contrasts" "data" "formula" "m" "method" "mf" "model" "mt" "na.action" "offset"
[12] "qr" "ret.x" "ret.y" "singular.ok" "subset" "w" "weights" "x" "y" "z"
> get("cl", .last_env)
lm(formula = y ~ x, data = data.frame(x = 1:10, y = 10:1))
0
Đây có phải là loại điều bạn đang tìm kiếm?
> fjj <- function() { x <- 3; y <- 4; ls(environment())}
> fjj()
[1] "x" "y"
Hoặc có thể bạn sẽ muốn danh sách nơi bạn nhận được 'từng thành phần.
1
Để có được tất cả các biến và giá trị của họ như là một danh sách mà bạn có thể sử dụng dòng cuối cùng của hàm trong ví dụ này:
myFunction=function(){
a="lolcat"
b=data.frame(firstCol=1:3,secondCol=letters[1:3])
d=list()
d[["someName"]]=10:13
sapply(ls(),function(x)get(x),simplify=F,USE.NAMES=T)
}
myResults=myFunction()
myResults
Output:
$a
[1] "lolcat"
$b
firstCol secondCol
1 1 a
2 2 b
3 3 c
$d
$d$someName
[1] 10 11 12 13
Các vấn đề liên quan
- 1. Tạo biểu đồ cuộc gọi trong R
- 2. Doxygen để ghi lại tất cả các hàm trong một lớp có biểu đồ cuộc gọi?
- 3. Truy cập tất cả các đối số hàm trong R
- 4. Nhận tất cả các biến được gửi bằng POST?
- 5. Gọi hàm R từ VC++
- 6. Danh sách tất cả các cuộc gọi chức năng được thực hiện trong một ứng dụng
- 7. Tạo vectơ kết quả của các cuộc gọi hàm lặp lại trong R
- 8. Gọi hàm Stata từ R
- 9. Visual Studio - hiển thị tất cả các cuộc gọi đến một hàm ở mức mã nguồn
- 10. nhận tất cả các trường từ DynamicForm
- 11. Javascript: Chuyển tiếp các cuộc gọi hàm nhận số biến số của đối số
- 12. Ghi nhật ký/giám sát tất cả các cuộc gọi chức năng từ một ứng dụng
- 13. Eclipse có thể được sử dụng để tìm tất cả các cuộc gọi phương thức không được chấp nhận?
- 14. Nhận tất cả các phím được nhấn
- 15. Nhà điều hành cuộc gọi gán mặc định = trên tất cả các thành viên?
- 16. Nhận tất cả các hàng không được lọc từ jqGrid
- 17. CakePHP không nhận được tất cả các trường từ DB?
- 18. Nhận tất cả các hàng từ SQLite
- 19. Nhận tất cả các thẻ từ taggit
- 20. JavaScript Nhận tất cả các tập lệnh được tải
- 21. Các cuộc gọi hàm jquery Delay
- 22. R - Lấy biểu mẫu từ đối tượng cuộc gọi
- 23. Gọi hàm R từ truy vấn sqldf
- 24. trích xuất tên cuộc gọi chức năng từ một cuộc gọi hàm
- 25. Gọi hàm Javascript từ cuộc gọi lại C++ trong V8
- 26. Tại sao các biến mẫu được khởi tạo trước khi hàm tạo được gọi là?
- 27. Sử dụng hàm tạo trong một cuộc gọi hàm?
- 28. hàm tạo bản sao cuộc gọi từ hàm điều hành gán
- 29. Xem tất cả các cuộc gọi hệ thống được thực hiện bởi một chương trình Java
- 30. Nhận danh sách tất cả các tham số chức năng từ bên trong hàm
là 'ls()' tại kết thúc chức năng không đủ? Bạn có nghĩa là bạn muốn nhận danh sách biến bên trong hàm hoặc bên ngoài hàm? – kohske
Tôi không có nguồn chức năng, vì vậy tôi không thể đặt ls bên trong của nó. Hãy tưởng tượng tôi muốn thực hiện thao tác này trên một hàm trong một trong các thư viện cơ sở. – SFun28