第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將data.framework列名傳遞給函數(shù)

將data.framework列名傳遞給函數(shù)

holdtom 2019-06-18 16:52:44
將data.framework列名傳遞給函數(shù)我試圖編寫一個(gè)函數(shù)來接受data.framework(x)和column從那里。函數(shù)在x上執(zhí)行一些計(jì)算,然后返回另一個(gè)data.framework。我堅(jiān)持使用最佳實(shí)踐方法將列名傳遞給函數(shù)。兩個(gè)極小例子fun1和fun2下面生成所需的結(jié)果,能夠在x$column,使用max()舉個(gè)例子。然而,兩者都依賴于表面上(至少對我來說)不雅的東西。打電話給substitute()也有可能eval()需要將列名作為字符向量傳遞。fun1 <- function(x, column){   do.call("max", list(substitute(x[a], list(a = column))))}fun2 <- function(x, column){   max(eval((substitute(x[a], list(a = column)))))}df <- data.frame(B = rnorm(10))fun1(df, "B")fun2(df, "B")我希望能夠?qū)⑦@個(gè)函數(shù)稱為fun(df, B)例如。我已考慮但尚未嘗試的其他選擇:經(jīng)過,穿過column作為列號的整數(shù)。我想這樣可以避免substitute()..理想情況下,該函數(shù)可以接受任何一個(gè)。with(x, get(column)),但是,即使它有效,我認(rèn)為這仍然需要substitute利用formula()和match.call()這兩個(gè)我都沒有太多的經(jīng)驗(yàn)。子問題*是do.call()優(yōu)先于eval()?
查看完整描述

3 回答

?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以直接使用列名:

df <- data.frame(A=1:10, B=2:11, C=3:12)fun1 <- function(x, column){
  max(x[,column])}fun1(df, "B")fun1(df, c("B","A"))

沒有必要使用替代物,val等。

您甚至可以將所需的函數(shù)作為參數(shù)傳遞:

fun1 <- function(x, column, fn) {
  fn(x[,column])}fun1(df, "B", max)

或者,使用[[還可以一次選擇一個(gè)列:

df <- data.frame(A=1:10, B=2:11, C=3:12)fun1 <- function(x, column){
  max(x[[column]])}fun1(df, "B")


查看完整回答
反對 回復(fù) 2019-06-18
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

就我個(gè)人而言,我認(rèn)為將列作為字符串傳遞是非常丑陋的。我喜歡做這樣的事情:

get.max <- function(column,data=NULL){
    column<-eval(substitute(column),data, parent.frame())
    max(column)}

這將產(chǎn)生:

> get.max(mpg,mtcars)[1] 33.9> get.max(c(1,2,3,4,5))[1] 5

請注意data.framework的規(guī)范是如何可選的。您甚至可以使用列的函數(shù):

> get.max(1/mpg,mtcars)[1] 0.09615385


查看完整回答
反對 回復(fù) 2019-06-18
  • 3 回答
  • 0 關(guān)注
  • 404 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號