[問題] 不會傳遞 expression 到sub-function
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
以 subsetBy 為例好了 (這是doBy package 的一個function)
這個 function 可以依照組別來篩選 data frame 的資料。
假設我想要寫一個 function 會用到 subsetBy
這個 function 的功能是依組別去除 2 倍 SD 之外的資料
問題如下:
subsetBy 的第二個參數是要輸入一個 expression (應該是吧)
如
subsetBy(~Evit, Weight < mean(Weight), data=dietox)
這個 expression 是篩選資料的算式,其中的變數會對應到 data frame
的 column name
而我想要寫一個 function 是
sdSubsetFun = function(group, dVar, data)
data 是我要操作的 data frame
dVar 是要去掉的 2SD 的目標 column name
group 是分組的依據 (class 是 formula)
但是我沒辦法將 dVar 傳進去裏面的 subsetBy 的第二個參數
程式碼如下
######################################################################
library('doBy')
sdSubsetFun = function(group, dVar, data) {
sdVar = substitute(dVar)
# 2SD threshold
subsetThreshold = substitute( (sdVar > (mean(sdVar) - 2*sd(sdVar))) &
(sdVar < (mean(sdVar) + 2*sd(sdVar))) )
dataOut = subsetBy(group,
subset = eval(subsetThreshold, group, parent.frame()),
data = data)
}
# Create Data
aa = rep(c('a','b','c'), 50)
bb = 1:150
tData = data.frame(aa,bb)
subData = sdSubsetFun(~aa, bb, tData)
######################################################################
錯誤訊息為:
> subData = sdSubsetFun(~aa, bb, tData)
Error in eval(subsetThreshold, group, parent.frame()) :
object 'subsetThreshold' not found
也就是說,裏面的 subsetBy 都不會抓我的 subsetThreshold 的值,
都還是會抓 subsetThreshold 自己本身的 expression。
要怎麼做才會讓他抓到 subsetThreshold 的值呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 139.184.222.136
→
06/01 09:21, , 1F
06/01 09:21, 1F
→
06/01 09:22, , 2F
06/01 09:22, 2F
→
06/01 16:23, , 3F
06/01 16:23, 3F
→
06/01 16:24, , 4F
06/01 16:24, 4F
※ 編輯: cog5566 來自: 139.184.222.89 (06/01 18:02)
推
06/01 19:24, , 5F
06/01 19:24, 5F
→
06/02 06:19, , 6F
06/02 06:19, 6F
→
06/02 06:19, , 7F
06/02 06:19, 7F
推
06/02 10:05, , 8F
06/02 10:05, 8F
→
06/02 10:05, , 9F
06/02 10:05, 9F
→
06/02 10:05, , 10F
06/02 10:05, 10F
→
06/02 10:06, , 11F
06/02 10:06, 11F
→
06/02 11:10, , 12F
06/02 11:10, 12F
推
06/02 11:47, , 13F
06/02 11:47, 13F
推
06/02 11:55, , 14F
06/02 11:55, 14F
→
06/03 10:00, , 15F
06/03 10:00, 15F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 8 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章