日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

直接写和放在函数中不同的R语言用法

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 直接写和放在函数中不同的R语言用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

索引數據框中的某一列

df$A可以索引數據框df中列名為A的列的所有值。那么假如列名是一個R對象怎么做?

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

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

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

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

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

  • sym把一個R字符串對象轉換為一個symbol。

  • (bang-bang操作符)!!則把symbol再轉回R字符串對象,等同于直接寫這個對象。

  • 看新的例子中,xvariable="A";xvariable_en <- sym(xvariable)轉換為了symbol;aes(x=!!xvariable_en)等同于直接寫aes(x=A)。兜兜轉轉,2步轉換把想傳的值傳進去了。

    # 注意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和!!!,則可以轉換向量、列表對象。

    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 <- syms(columns) df %>% select(!!!columns_en)## A B ## 1 1 2 ## 2 2 4 ## 3 3 6 ## 4 4 8 ## 5 5 10

    寫個公式 (formula)

    公式 (formula)是一個在運算和繪圖中常用的形式,直接寫公式A~B可以,但如果是用對象構造公式呢?

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

    通過as.formula轉換

    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

    當然下面這個“神奇”的寫法也可以,整個表達式構建一個字符串,再解析執行出來。

    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

    往期精品(點擊圖片直達文字對應教程)

    機器學習

    后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集

    總結

    以上是生活随笔為你收集整理的直接写和放在函数中不同的R语言用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。