直接写和放在函数中不同的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 % 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

    郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
    用户投稿
    上一篇 2022年6月15日 21:17
    下一篇 2022年6月15日 21:17

    相关推荐

    • 存储过程语法(sql server存储过程语法)

      今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

      2022年11月26日
    • 什么是推广cpa一篇文章带你看懂CPA推广渠道

      CPA渠道 CPA指的是按照指定的行为结算,可以是搜索,可以是注册,可以是激活,可以是搜索下载激活,可以是绑卡,实名认证,可以是付费,可以是浏览等等。甲乙双方可以根据自己的情况来定…

      2022年11月25日
    • 抖音直播带货有哪些方法技巧(抖音直播带货有哪些痛点)

      如今抖音这个短视频的变现能力越来越突显了,尤其是在平台上开通直播,更具有超强的带货属性,已经有越来越多的普通人加入到其中了。不过直播带货虽然很火,但是也不是每个人都能做好的,那么在…

      2022年11月24日
    • 明查|美国新冠后遗症患者中有16%症状严重以致无法工作?

      点击进入澎湃新闻全球事实核查平台 速览 – 网传数据比例无权威信源佐证,该比例有可能是结合了美国疾病防控中心和布鲁金斯学会的数据得出,但这两个机构的调研目的和样本都不同…

      2022年11月24日
    • 淘宝运营数据分析的3个指标解析(运营数据分析怎么做)

      我们知道淘宝运营工作中对于数据的分析与整理是很重要的,这些工作乍一听可能比较难,但是也有一些相关的技巧可以让我们能够有效的找出对我们有用的数据,这样我们也能够更加直观的看出我们店铺…

      2022年11月20日
    • 展字的各种写法图片(展笔顺什么意思)

      昨天我们讲解了上展下收,今天我们讲解上收下展,看过昨天文章内容的朋友,对今天所讲的内容应该不难理解。 结构八:上收下展。 简单来说就是上边部分的笔画收缩,下边部分笔画舒展。详细讲解…

      2022年11月19日
    • 淘宝运营团队怎么找(网店运营与推广)

      很多商家认为网店代运营就是将网店外包出去 因此在找服务商的时候不知道从何下手,也不知道怎么配合代运营公司 其实网店代运营除了有运营外包之外,还可以根据自己的实际情况进行选择其他合作…

      2022年11月18日
    • 1公顷等于多少平方千米(公顷等于多少平方米)

      四年级数学上册第二单元 公顷和平方千米 一、换算进率 1平方千米= 100公顷=1000000 平方米 1公顷= 10000平方米 1平方米=100平方分米 1平方分米= 100平…

      2022年11月18日
    • 微信缓存是什么 清理微信的缓存会不会清除聊天记录?

      软件使用的越久,产生的缓存垃圾也就越多。但是很多朋友不敢清理微信的缓存,怕把聊天记录一并清理了。那么清理微信缓存会不会删除聊天记录?想知道答案的小伙伴就跟小编一起来看看吧! 清理微…

      2022年11月18日
    • 网页版淘宝登录入口(淘宝网页版怎么进入)

      现在淘宝已经成为我们生活中必不可少的一个购物平台了,当需要什么东西的时候,直接打开淘宝搜索一下就可以了。这种趋势也让更多的商家入驻淘宝开店,选择在网上做生意。有些商家在管理淘宝店铺…

      2022年11月18日

    联系我们

    联系邮箱:admin#wlmqw.com
    工作时间:周一至周五,10:30-18:30,节假日休息