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

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

在R中制作字符串連接運(yùn)算符

在R中制作字符串連接運(yùn)算符

隔江千里 2019-12-15 16:08:59
我想知道如何在R中編寫(xiě)字符串連接運(yùn)算符,例如||。在SAS,+在Java / C?;颍υ赩isual Basic中。最簡(jiǎn)單的方法是使用%創(chuàng)建特殊運(yùn)算符,例如`%+%` <- function(a, b) paste(a, b, sep="")但這會(huì)導(dǎo)致%代碼中很多難看的東西。我注意到,這+是在Ops組中定義的,您可以為該組編寫(xiě)S4方法,所以也許可以采用類(lèi)似的方法。但是,我完全沒(méi)有使用S4語(yǔ)言功能的經(jīng)驗(yàn)。我如何修改上述功能以使用S4?
查看完整描述

3 回答

?
富國(guó)滬深

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

正如其他人提到的那樣,您不能覆蓋密封的S4方法“ +”。但是,您無(wú)需定義新的類(lèi)即可為字符串定義加法函數(shù)。這不是理想的選擇,因?yàn)樗鼤?huì)迫使您轉(zhuǎn)換字符串的類(lèi),從而導(dǎo)致代碼更丑陋。而是可以簡(jiǎn)單地覆蓋“ +”函數(shù):


"+" = function(x,y) {

    if(is.character(x) || is.character(y)) {

        return(paste(x , y, sep=""))

    } else {

        .Primitive("+")(x,y)

    }

}

然后,以下所有內(nèi)容均應(yīng)按預(yù)期工作:


1 + 4

1:10 + 4 

"Help" + "Me"

該解決方案有點(diǎn)像hack,因?yàn)槟辉偈褂眯问交椒?,而是獲得所需確切行為的唯一方法。



查看完整回答
反對(duì) 回復(fù) 2019-12-16
?
ABOUTYOU

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

我會(huì)嘗試的(相對(duì)更干凈的S3解決方案)


`+` <- function (e1, e2) UseMethod("+")

`+.default` <- function (e1, e2) .Primitive("+")(e1, e2)

`+.character` <- function(e1, e2) 

    if(length(e1) == length(e2)) {

           paste(e1, e2, sep = '')

    } else stop('String Vectors of Different Lengths')

上面的代碼將更改為+通用代碼,并將設(shè)置+.default為原始代碼+,然后將新方法添加+.character到+



查看完整回答
反對(duì) 回復(fù) 2019-12-16
?
慕娘9325324

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

您也可以為此使用S3類(lèi):


String <- function(x) {

  class(x) <- c("String", class(x))

  x

}


"+.String" <- function(x,...) {

  x <- paste(x, paste(..., sep="", collapse=""), sep="", collapse="")

  String(x)

}



print.String <- function(x, ...) cat(x)


x <- "The quick brown "

y <- "fox jumped over "

z <- "the lazy dog"


String(x) + y + z



查看完整回答
反對(duì) 回復(fù) 2019-12-16
  • 3 回答
  • 0 關(guān)注
  • 786 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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