【问题标题】:use outside variable inside of rename() function in R在R中的rename()函数内部使用外部变量
【发布时间】:2018-01-30 16:11:34
【问题描述】:

我是R 的新手,遇到问题

我正在尝试重新格式化一些数据,并且在此过程中我想重命名新数据集的列。

这是我尝试这样做的方法:

首先读取.csv 文件,比如说case1_case2.csv 然后.csv 文件的名称分为两部分 每个部分都分配给一个向量 所以它最终是这样的:

xName=case1
yName=case2

将数据放入新列后,我想将每列重命名为 case1 和 case2

为此,我尝试使用R 中的重命名函数,但没有重命名为case1case2,而是将列重命名为xNameyName

这是我的代码:

  for ( n in 1:length(dirNames) ){
      inFile <- read.csv(dirNames[n], header=TRUE, fileEncoding="UTF-8-BOM")
      xName <- sub("_.*","",dirNames[n])
      yName <- sub(".*[_]([^.]+)[.].*", "\\1", dirNames[n])
      xValues <- inFile %>% select(which(str_detect(names(inFile), xName))) %>% stack() %>% rename( xName = values ) %>% subset( select = xName)
      yValues <- inFile %>% select(which(!str_detect(names(inFile), xName))) %>% stack() %>% rename(yName = values, Organisms=ind)
      finalForm <- cbind(xValues, yValues) %>% filter(complete.cases(.))

}

如何确保变量xNameyNamerename() 函数内展开

谢谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    您没有提供可重现的示例,因此我将仅展示一般性的想法。 rename 函数是 dplyr 包的一部分。

    您需要“取消引用”包含要用作新列名的字符串的变量。取消引用运算符是!!,您需要使用特殊的:= 赋值运算符来允许在左侧取消引用。

    library(tidyverse)
    df <- data_frame(x = 1:3)
    y <- "Foo"
    
    df %>% rename(y=x)      # Not what you want - need to unquote y
    df %>% rename(!!y = x)  # Gives error - need to use :=
    df %>% rename(!!y := x) # Correct
    

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 2019-12-12
      • 2021-08-20
      • 1970-01-01
      • 2012-07-14
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      相关资源
      最近更新 更多