R dplyr:使用字符串函数重命名变量

2023-12-09

(有点相关的问题:在 dplyr 的重命名函数中以字符串形式输入新列名称)

在中间一个dplyr chain (%>%),我想用旧名称的函数替换多个列名称(使用tolower or gsub, etc.)

library(tidyr); library(dplyr)
data(iris)
# This is what I want to do, but I'd like to use dplyr syntax
names(iris) <- tolower( gsub("\\.", "_", names(iris) ) )
glimpse(iris, 60)
# Observations: 150
# Variables:
#   $ sepal_length (dbl) 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6,...
#   $ sepal_width  (dbl) 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4,...
#   $ petal_length (dbl) 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4,...
#   $ petal_width  (dbl) 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3,...
#   $ species      (fctr) setosa, setosa, setosa, setosa, s...

# the rest of the chain:
iris %>% gather(measurement, value, -species) %>%
  group_by(species,measurement) %>%
  summarise(avg_value = mean(value)) 

我明白了?rename接受论证replace as a named character vector, with new names as values, and old names as names.罢工>

所以我尝试:

iris %>% rename(replace=c(names(iris)=tolower( gsub("\\.", "_", names(iris) ) )  ))

但这(a)返回Error: unexpected '=' in iris %>% ...(b) 需要按名称引用链中先前操作的数据帧,但在我的实际用例中我无法做到这一点。

iris %>% 
  rename(replace=c(    )) %>% # ideally the fix would go here
  gather(measurement, value, -species) %>%
  group_by(species,measurement) %>%
  summarise(avg_value = mean(value)) # I realize I could mutate down here 
                                     #  instead, once the column names turn into values, 
                                     #  but that's not the point
# ---- Desired output looks like: -------
# Source: local data frame [12 x 3]
# Groups: species
# 
#       species  measurement avg_value
# 1      setosa sepal_length     5.006
# 2      setosa  sepal_width     3.428
# 3      setosa petal_length     1.462
# 4      setosa  petal_width     0.246
# 5  versicolor sepal_length     5.936
# 6  versicolor  sepal_width     2.770
# ... etc ....  

这是一个很晚的答案,2017 年 5 月

As of dplyr 0.5.0.9004,即将推出 0.6.0,许多重命名列的新方法,符合maggritr管道操作员%>%,已添加到包中。

这些功能是:

  • 全部重命名
  • 重命名_如果
  • 重命名_at

使用这些函数有很多不同的方法,但与您的问题相关的一种方法是使用stringr包如下:

df <- df %>%
  rename_all(
      funs(
        stringr::str_to_lower(.) %>%
        stringr::str_replace_all(., '\\.', '_')
      )
  )

因此,继续进行管道安装:)(无双关语)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R dplyr:使用字符串函数重命名变量 的相关文章

  • PHP正则表达式在wordpress短代码标签之间替换

    我有一个短代码 我希望能够根据帖子的上下文将其删除 例如 tooltip slug test Test Text tooltip 我希望输出是 span class dummy Test Text span 我已经用 preg replac
  • 添加不同的标签以在 ggplot R 中的堆积条形图中显示总计?

    我的问题有点类似 如何添加文本标签以显示ggplot中堆叠比例条的每个条中的总数n https stackoverflow com questions 65201095 how to add text label to show total
  • 使用 roxygen2 记录数据集

    我正在尝试使用 roxygen2 记录 R 包中的一些数据集 仅考虑其中之一 I have mypkg data CpG human GRCh37 RDa 其中包含一个名为的对象CpG human GRCh37 和一个名为 mypkg R
  • 根据绘图单击事件对数据框进行子集化

    我有下面的数据框 Name lt c John Bob Jack Number lt c 3 3 5 NN lt data frame Name Number 还有一个简单闪亮的应用程序 可以从中创建一个绘图直方图 我的目标是单击直方图的一
  • 两个闪亮的操作按钮

    我正在编写一个闪亮的函数 其中包含两个操作按钮 这两个按钮是左右按钮 单击时可以帮助绘图移动 第一次单击时 这两个按钮都工作正常 当我重新单击它们时 就会出现问题 无论我单击哪个按钮 它都会在两个范围之间来回弹跳 我猜可能是 右 和 左 按
  • Rblpapi - 将 bdp 与 ISIN / Cusip 一起使用会出现错误

    当我将 bdp 与 ISIN 或 CUSIP 一起使用时 出现以下错误 bdp US25470XAB10 ISIN ULT PARENT TICKER EXCHANGE bdp 25470XAB1 CUSIP ULT PARENT TICK
  • 从子字符串中提取的映射运算符

    I have list of dicts print L 0 x 1 1 y 2 2 z 1 0 x 1 1 y lt 3 2 z gt 1 我想创建元组 其值位于运算符之前 运算符之后 值之后 first step wanted x 1
  • ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

    当我使用进行预测时forecast库 我注意到以下代码没有按预期运行 library forecast library dplyr df1 lt data frame gp gl 20 5 dt seq 1 100 get lt funct
  • PHP 中的正则表达式:找到第一个匹配的字符串

    我想在非常长的文本中找到第一个匹配的字符串 我知道我可以使用 preg grep 并获取返回数组的第一个元素 但是 如果我只需要第一场比赛 或者我知道提前只有一场比赛 那么这样做效率不高 有什么建议吗 预匹配 http www php ne
  • 用于从 Open3.popen3 标准输出中提取值的正则表达式

    如何获取外部命令的输出并从中提取值 我有这样的事情 stdin stdout stderr wait thr Open3 popen3 path foobar configfile if exit 0 wait thr value to s
  • 如何在 R 中使用 msgbox [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在中显示消息框R 我正在寻找类似的东西msgbox在 VBA 中 因此我可以向用户发出有关问题的警报 此外 我想允许一些用户交互 例如
  • 如何将变量传递给 ddply 中的自定义函数?

    考虑以下数据 d data frame experiment as factor c foo foo foo bar bar si runif 5 ti runif 5 我想进行相关性测试si and ti 对于每个experiment因素
  • 为什么在线解析器似乎停在正则表达式处?

    我一直想知道为什么似乎没有任何解析器 比如说 BNF http en wikipedia org wiki Backus E2 80 93Naur Form 其行为类似于各种库中的正则表达式 当然 还有类似的事情ANTLR http www
  • 在 R 中使用 ggplot2 叠加两个图

    有两个数据框 df1 df2我需要使用 ggplot2 创建线图并显示在同一个图表上 df1 x y 2 30 4 25 6 20 8 15 df2 x y 2 12 4 16 6 20 8 24 用于绘制第一个 df p1 lt ggpl
  • 如何仅替换多个文件中记事本++中的第一个文本实例?

    我正在努力更新一个网站并进行一些更改 并且我已经成功使用标准查找和替换搜索对多个文件进行了大部分更改 我的 f r 中只留下一个错误需要修复 但它在整个文档中出现了几次 我只想替换第一个实例 这是唯一一次错误 div class boxb
  • R/ggplot2:如何匹配重叠区域图中的图例和绘图颜色?

    我有两个面积图 称为 蓝色 和 绿色 其中green大部分是在blue情节 但在极少数点上 它高于blue阴谋 我想使用透明度说alpha 0 2对于两者 并且还能够为每个指定颜色 我现在的问题是 自从green情节主要是在blue地块 其
  • R 中的微秒时间戳

    在 CSV 文件中 我有几列 其中一列有时间戳 其中每个时间戳是今天午夜经过的微秒 每个 csv 文件仅包含一天内的数据 因此这并不含糊 我的问题是 如何将这些微秒时间戳解析为 R 多谢 我的 CSV 文件的一部分 34201881666
  • 如何解决 R 估计中的整数溢出错误

    我正在尝试使用估计模型speedglm在 R 中 数据集很大 约 6988 万行和 38 列 行数和列数相乘得到约 27 亿 超出了整数限制 我无法提供数据 但以下示例重现了该问题 library speedglm large exampl
  • 删除 .htaccess 中 URL 中各处的多组斜杠

    我目前有一个网站 访客可以访问每个网址 并使用任意数量的斜杠来分隔文件夹名称 例如 如果 URL 应该是 http example com one two three four 然后用户可以通过以下任意方式访问同一页面 http examp
  • Excel VBA 自动过滤子字符串

    我的 Excel 中有多行 其中 D 列为 TDM 02 Bundle Rehoming 5 NE TDM 02 Bundle Rehoming 23 NE IP 02 Bundle Rehoming 7 NE 等 请注意 大多数情况下 N

随机推荐

  • PHP 从数组中获取最高值

    我试图获取数组中的最大值 同时仍然保留项目标签 我知道我可以通过运行 sort 来做到这一点 但如果我这样做 我只会丢失标签 这使得它对我所需要的毫无意义 这是数组 array a gt 1 b gt 2 c gt 4 d gt 5 有任何
  • Lucene 4.0 IndexWriter 更新数字术语文档

    我只是想知道如何根据数字字段更新 删除 插入 文档 到目前为止我这样做了 LuceneManager updateDocument writer new Term id NumericUtils intToPrefixCoded sente
  • javascript解析浮点错误

    我正在尝试获取表的行总和 td1 价值 5 000 00 美元 td2 价值 3000 00 美元 我正在使用以下代码 var totalnum 0 num each function totalnum parseFloat this ht
  • 如何使用所需的用户库执行maven主类?

    我创建了一个 Maven 项目 其中只有一个类可用 我想在这个类中使用 jnetpcap API 为此 我遵循了jnet eclipse 设置使用设置 1 方法 用户库 的教程并创建了一个用户库并将其添加到我的项目中 JnetTest ja
  • 如何让机器人按住鼠标按钮一段时间?

    我正在使用 Java 使用 Robot 类生成鼠标按下操作 robot mousePress InputEvent BUTTON1 MASK robot mouseRelease InputEvent BUTTON1 MASK 但是 我希望
  • 如何在 Objective-C 中使用 Swift 结构体

    简而言之 我有一个存储应用程序常量的结构 如下所示 struct Constant static let ParseApplicationId xxx static let ParseClientKey xxx static var App
  • clearfsimport 不会删除组件根目录中的文件

    我使用此命令行将文件导入 VOB clearfsimport recurse rmname nsetevent filter
  • 如何有效地获取文件中的行数? [复制]

    这个问题在这里已经有答案了 我有一个大文件 它包括大约 3 000 20 000 行 如何使用 Java 获取文件中的总行数 BufferedReader reader new BufferedReader new FileReader f
  • 如何通过javascript下载pdf文件?

    我的 javascript 代码向我的 node js 服务器发出以下 AJAX 请求 var url node download var downloadRequest new goog net XhrIo downloadRequest
  • MiniProfilerEF.Initialize() 无法正确初始化

    我刚刚开始在我的 MVC3 项目中使用 EF4 1 尝试 mvc mini profiler 并在更改后MiniProfilerEF Initialize to MiniProfilerEF Initialize EF42 我越来越 在商店
  • 按里面的数字对字符串进行排序

    我想知道如何按字符串中的数字对字符串进行排序 作为例子我有 hello hola d number from database bye adios d number from database again 我想按数字对它们进行排序 即使它发
  • Python 的 Colorama,在 Windows 上不返回彩色打印线

    我已经为 python 安装了 colorama 我已按如下方式导入模块 import colorama from colorama import init init from colorama import Fore Back Style
  • 将 ASP.NET 从版本 1.1 升级到 2.0 - 有任何问题吗?

    我知道我们是really这里落后于时代 但我们即将从 NET 1 1 升级到 NET 2 0 谢谢你的同情 无论如何 有什么我们应该注意的问题吗 在我们开始之前 您有什么一般性建议吗 请不要发帖告诉我直接升级到 3 5 我们只能使用 2 0
  • Flutter - 无法使用灵活的内部填充进行文本换行

    在我的 flutter 应用程序中 我想要一张卡片和四个盒子水平对齐 其内部的宽度和高度相等 代码如下 override Widget build BuildContext context return MaterialApp home S
  • 返回 MS Access 中每组的增量组编号

    我需要帮助在 Access 中创建一个查询 以递增地对行组进行编号 在公共日期进行分组 并在下一个日期保留 组编号 增量 如 结果 列中显示的那样 日期 ID 结果 2017 01 09 809 1 2017 01 09 810 1 201
  • 复杂表合并 javascript 和 jquery 算法

    我有一个相当独特的问题 无法解决 我有一张 2 x 3 的桌子 排列如下图所示 1 2 1 像这样 http jsfiddle net 4zGvg 适用于任意行 列 想法 我们有values矩阵和span矩阵 的价值观span are 0
  • 是否有适用于 .NET(C# 或 VB.NET)的 UPnP 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在开发一个 P2P 应用程序 我需要让它使用 UPnP 通过 NAT 路由器 防火墙进行通信 但是 NET Framework 似乎不包含对 U
  • strftime() 函数显示不正确的时间

    The strftime php 中的函数在我的系统上没有显示正确的时间 我在 xampp 上运行 php 我的电脑时钟大约是 11 点 但功能strftime 当我执行以下代码时返回 19 echo Time is strftime H
  • 释放 Solaris/Linux 中分配的内存

    我编写了一个小程序 并在 Solaris Linux 平台下编译它 以测量将此代码应用于我的应用程序的性能 该程序是这样编写的 最初使用sbrk 0 系统调用 我已经获取了堆区域的基地址 之后我使用分配了 1 5 GB 内存malloc系统
  • R dplyr:使用字符串函数重命名变量

    有点相关的问题 在 dplyr 的重命名函数中以字符串形式输入新列名称 在中间一个dplyr chain gt 我想用旧名称的函数替换多个列名称 使用tolower or gsub etc library tidyr library dpl