這太瘋狂了,只是出於對知識的好奇:我可以在R中運行一個函數,以便在函數完成後我可以獲取函數執行時創建的所有變量嗎?那麼在返回之前能夠查看一個函數的能力呢?我不是說在調試模式下進入該功能。R - 獲得函數調用創建的所有變量
12
A
回答
18
我不確定這是你想要的,但也許很接近。 您可以嵌入由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
這是那種你正在尋找的東西?
> fjj <- function() { x <- 3; y <- 4; ls(environment())}
> fjj()
[1] "x" "y"
或者你可能想要一個你得到每個組件的列表。
1
要獲得一個列表中,您可以使用此示例中的函數的最後一行的所有變量及其值:
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
輸出:
$a
[1] "lolcat"
$b
firstCol secondCol
1 1 a
2 2 b
3 3 c
$d
$d$someName
[1] 10 11 12 13
相關問題
- 1. 如何獲得函數內調用函數的變量值
- 2. 創建獲取變量值的函數
- 3. 基於輸入變量創建和引用列的R函數
- 4. 如何創建一個函數來調用變量arg函數?
- 5. 在R中創建重複函數調用結果的向量
- 6. 使用局部變量創建R函數使用其值
- 7. R獲取通過函數調用創建的環境
- 8. Python變量創建函數
- 9. 使用函數中創建的變量
- 10. 在函數中創建變量常量R
- 11. GBM R函數:獲得每個類的變量重要性
- 12. 在R腳本中,如何使用所有參數的變量創建序列?
- 13. 獲得UL的所有值成變量
- 14. 使用可選的調用變量創建一個函數
- 15. 根據現有變量使用R創建新變量
- 16. dplyr:創建一個新的變量,所有現有變量的函數沒有定義他們的名字
- 17. 虛擬變量創建的動態函數R
- 18. 如何使用循環來獲得所有變量對的xtabs函數結果?
- 19. 獲得Java腳本函數PHP變量
- 20. 動態地創建未定義的變量調用函數
- 21. r data.frame創建新變量
- 22. 使用R創建變量的日期
- 23. 使用不同變量創建函數
- 24. 獲取變量來調用函數C++
- 25. R-循環來在數據幀創建的所有變量的非可逆比
- 26. 如何獲得所有全局變量
- 27. R:使用所有鍵盤常量創建矢量
- 28. 使用R獲得一年中所有日子的矢量
- 29. 創建通用函數,將在所有路由調用
- 30. 用回調函數創建變量sheerock js
是'LS()'在功能結束不足?你是說你想要在函數內部或函數外部獲取變量列表嗎? – kohske
我沒有這個函數的源碼,所以我不能把ls放在裏面。想象一下,我想對其中一個基本庫中的函數執行此操作。 – SFun28