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

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

`levels <-`(這是什么法術(shù)?

`levels <-`(這是什么法術(shù)?

ABOUTYOU 2019-10-06 12:55:47
在回答另一個問題時,@ Marek發(fā)布了以下解決方案:https ://stackoverflow.com/a/10432263/636656dat <- structure(list(product = c(11L, 11L, 9L, 9L, 6L, 1L, 11L, 5L,                                   7L, 11L, 5L, 11L, 4L, 3L, 10L, 7L, 10L, 5L, 9L, 8L)), .Names = "product", row.names = c(NA, -20L), class = "data.frame")`levels<-`(  factor(dat$product),  list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)  )產(chǎn)生的輸出: [1] Generic Generic Bayer   Bayer   Advil   Tylenol Generic Advil   Bayer   Generic Advil   Generic Advil   Tylenol[15] Generic Bayer   Generic Advil   Bayer   Bayer  這只是矢量的打印輸出,因此要存儲它,您可能會更加困惑:res <- `levels<-`(  factor(dat$product),  list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)  )顯然,這是對level函數(shù)的某種調(diào)用,但是我不知道在這里正在做什么。這種巫術(shù)的術(shù)語是什么,我如何在這方面增加我的魔法能力?
查看完整描述

3 回答

?
瀟瀟雨雨

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

這里的答案是好的,但是它們?nèi)鄙僦匾囊稽c(diǎn)。讓我嘗試描述一下。


R是一種功能語言,不喜歡對其對象進(jìn)行突變。但是它確實(shí)允許使用替換函數(shù)進(jìn)行賦值語句:


levels(x) <- y

相當(dāng)于


x <- `levels<-`(x, y)

訣竅是,這種重寫是由<-; 完成的。它不是由levels<-。levels<-只是一個接受輸入并給出輸出的常規(guī)函數(shù);它不會改變?nèi)魏螙|西。


結(jié)果之一是,根據(jù)上述規(guī)則,<-必須是遞歸的:


levels(factor(x)) <- y


factor(x) <- `levels<-`(factor(x), y)


x <- `factor<-`(x, `levels<-`(factor(x), y))

這種純功能的轉(zhuǎn)換(直到最后,發(fā)生賦值)等同于一種命令式語言中的賦值,這是一種美麗。如果我沒記錯的話,這種用功能語言構(gòu)造的鏡頭稱為鏡頭。


但是,一旦您定義了諸如的替換函數(shù)levels<-,您將獲得另一個意想不到的意外收獲:您不僅具有進(jìn)行分配的能力,還擁有一個方便的函數(shù),該函數(shù)吸收了一個因數(shù),并給出了另一個具有不同級別的因數(shù)。確實(shí)沒有任何“分配”!


因此,您所描述的代碼只是利用的另一種解釋levels<-。我承認(rèn)這個名稱levels<-有點(diǎn)令人困惑,因?yàn)樗凳玖艘豁?xiàng)任務(wù),但是事實(shí)并非如此。該代碼只是建立了一種管道:


從...開始 dat$product


將其轉(zhuǎn)換為因子


改變水平


存放在 res


我個人認(rèn)為代碼行很漂亮;)


查看完整回答
反對 回復(fù) 2019-10-06
?
慕虎7371278

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

沒有法寶,這就是(子)分配功能的定義方式。  levels<-有所不同,因?yàn)樗牵ㄗ樱┓峙湟蜃訉傩远皇窃乇旧淼脑己瘮?shù)。有很多此類函數(shù)的示例:


`<-`              # assignment

`[<-`             # sub-assignment

`[<-.data.frame`  # sub-assignment data.frame method

`dimnames<-`      # change dimname attribute

`attributes<-`    # change any attributes

其他二進(jìn)制運(yùn)算符也可以這樣調(diào)用:


`+`(1,2)  # 3

`-`(1,2)  # -1

`*`(1,2)  # 2

`/`(1,2)  # 0.5

既然您知道了,類似這樣的事情應(yīng)該真的讓您大吃一驚:


Data <- data.frame(x=1:10, y=10:1)

names(Data)[1] <- "HI"              # How does that work?!? Magic! ;-)


查看完整回答
反對 回復(fù) 2019-10-06
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個贊

之所以說是“魔術(shù)”,是因?yàn)椤百x值”表格必須具有實(shí)際變量才能使用。而且factor(dat$product)沒有分配任何東西。


# This works since its done in several steps

x <- factor(dat$product)

levels(x) <- list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)

x


# This doesn't work although it's the "same" thing:

levels(factor(dat$product)) <- list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)

# Error: could not find function "factor<-"


# and this is the magic work-around that does work

`levels<-`(

  factor(dat$product),

  list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)

  )


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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