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

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

在dplyr函數(shù)中使用變量名

在dplyr函數(shù)中使用變量名

慕勒3428872 2019-12-13 15:10:40
我想在中使用變量名作為字符串dplyr。請參閱以下示例:df <- data.frame(       color = c("blue", "black", "blue", "blue", "black"),       value = 1:5)filter(df, color == "blue")它運(yùn)行完美,但是我想color通過字符串來引用,就像這樣:var <- "color"filter(df, this_probably_should_be_a_function(var) == "blue").我很樂意以任何方式做到這一點(diǎn),并且非常樂于使用易于閱讀的dplyr語法。
查看完整描述

3 回答

?
守著一只汪

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

對于dplyr版本[0.3-0.7)(?-2017年6月)

(有關(guān)最新dplyr版本,請參閱此問題的其他答案)


從使用非標(biāo)準(zhǔn)評估(NSE,請參見發(fā)布和小插圖)的dplyr 0.3每個(gè)dplyr功能開始, 標(biāo)準(zhǔn)評估(SE)雙胞胎以下劃線結(jié)尾。這些可用于傳遞變量。因?yàn)闀?。使用您可能會將邏輯條件作為字符串傳遞。filterfilter_filter_


filter_(df, "color=='blue'")


#   color value

# 1  blue     1

# 2  blue     3

# 3  blue     4

用邏輯條件構(gòu)造字符串當(dāng)然很簡單


l <- paste(var, "==",  "'blue'")

filter_(df, l)



查看完整回答
反對 回復(fù) 2019-12-14
?
LEATH

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

在較新的版本中,我們可以使用我們可以創(chuàng)建帶引號的變量,然后取消引號(UQ或!!)以進(jìn)行評估


var <- quo(color)

filter(df, UQ(var) == "blue")

#   color value

#1  blue     1

#2  blue     3

#3  blue     4

由于運(yùn)算符的優(yōu)先級,我們可能需要()環(huán)繞!!


filter(df, (!!var) == "blue")

#   color value

#1  blue     1

#2  blue     3

#3  blue     4

對于新版本,||優(yōu)先級更高,因此


filter(df, !! var == "blue")

應(yīng)該工作(如@Moody_Mudskipper評論)


較舊的選項(xiàng)

我們還可以使用:


 filter(df, get(var, envir=as.environment(df))=="blue")

 #color value

 #1  blue     1

 #2  blue     3

 #3  blue     4

編輯:重新排列解決方案的順序



查看完整回答
反對 回復(fù) 2019-12-14
?
牛魔王的故事

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

從dplyr 0.7開始,某些情況再次發(fā)生了變化。


library(dplyr)

df <- data.frame( 

  color = c("blue", "black", "blue", "blue", "black"), 

  value = 1:5)

filter(df, color == "blue")


# it was already possible to use a variable for the value

val <- 'blue'

filter(df, color == val)


# As of dplyr 0.7, new functions were introduced to simplify the situation

col_name <- quo(color) # captures the current environment

df %>% filter((!!col_name) == val)


# Remember to use enquo within a function

filter_col <- function(df, col_name, val){

  col_name <- enquo(col_name) # captures the environment in which the function was called

  df %>% filter((!!col_name) == val)

}

filter_col(df, color, 'blue')

dplyr編程插圖中介紹了更多一般情況。



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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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