在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    直接寫和放在函數(shù)中不同的R語(yǔ)言用法

    索引數(shù)據(jù)框中的某一列

    df$A可以索引數(shù)據(jù)框df中列名為A的列的所有值。那么假如列名是一個(gè)R對(duì)象怎么做?

    df <- data.frame(A=1:5, B=(1:5)*2)df$A## [1] 1 2 3 4 5needed_column = 'A'# df$needed_column ? Wrong# 注意是雙方括號(hào)df[[needed_column]]## [1] 1 2 3 4 5

    ggplot2繪圖中指定所需的列信息

    ggplot繪圖時(shí),可以直接提供列名字(如下面的A和B分別指定為x軸和y軸)指定繪圖屬性,但如果列名字是一個(gè)R對(duì)象呢?這一情況常發(fā)生于自定義函數(shù)時(shí)。

    library(ggplot2)ggplot(data=df, aes(x=A, y=B)) + geom_point()

    如下:就需要使用sym和!!了,都來(lái)源于rlang包。

  • sym把一個(gè)R字符串對(duì)象轉(zhuǎn)換為一個(gè)symbol。
  • (bang-bang操作符)!!則把symbol再轉(zhuǎn)回R字符串對(duì)象,等同于直接寫這個(gè)對(duì)象。
  • 看新的例子中,xvariable=”A”;xvariable_en <- sym(xvariable)轉(zhuǎn)換為了symbol;aes(x=!!xvariable_en)等同于直接寫aes(x=A)。兜兜轉(zhuǎn)轉(zhuǎn),2步轉(zhuǎn)換把想傳的值傳進(jìn)去了。

    # 注意sym和!!的使用#ggplot_points <- function(data, xvariable, yvariable){ xvariable_en <- sym(xvariable) yvariable_en <- sym(yvariable) ggplot(data, aes(x=!!xvariable_en, y=!!yvariable_en)) + geom_point()}ggplot_points(df, "A", "B")

    另外還有syms和!!!,則可以轉(zhuǎn)換向量、列表對(duì)象。

    library(dplyr)df %>% select(A,B)## A B## 1 1 2## 2 2 4## 3 3 6## 4 4 8## 5 5 10# 等同于columns <- c("A","B")columns_en % select(!!!columns_en)## A B## 1 1 2## 2 2 4## 3 3 6## 4 4 8## 5 5 10

    寫個(gè)公式 (formula)

    公式 (formula)是一個(gè)在運(yùn)算和繪圖中常用形式,直接寫公式A~B可以,但如果是用對(duì)象構(gòu)造公式呢?

    lm(A~B, data=df)## ## Call:## lm(formula = A ~ B, data = df)## ## Coefficients:## (Intercept) B ## 1.192e-15 5.000e-01

    通過(guò)as.formula轉(zhuǎn)換

    y = ‘A’z = ‘B’formula1 <- as.formula(paste(y,"~", z))lm(formula1, data=df)## ## Call:## lm(formula = formula1, data = df)## ## Coefficients:## (Intercept) B ## 1.192e-15 5.000e-01

    當(dāng)然下面這個(gè)“神奇”的寫法也可以,整個(gè)表達(dá)式構(gòu)建一個(gè)字符串,再解析執(zhí)行出來(lái)。

    eval(parse(text=paste(“lm(“, y, “~”, z, “, data=df)”)))## ## Call:## lm(formula = A ~ B, data = df)## ## Coefficients:## (Intercept) B ## 1.192e-15 5.000e-01

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月15日 21:17
    下一篇 2022年6月15日 21:17

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息