Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的rename()函数内部使用外部变量_R - Fatal编程技术网

在R中的rename()函数内部使用外部变量

在R中的rename()函数内部使用外部变量,r,R,我是新来的R,遇到了一个问题 我正在尝试重新格式化一些数据,在此过程中,我希望重命名新数据集的列 以下是我如何尝试做到这一点: 首先读入.csv文件,假设case1\u case2.csv 然后将.csv文件的名称分为两部分 每个部分都指定给一个向量 结果是这样的: xName=case1 yName=case2 在我将数据放入新列之后,我想将每一列重命名为case1和case2 为此,我尝试在R中使用rename函数,但没有将列重命名为case1和case2,而是将列重命名为xName和yN

我是新来的
R
,遇到了一个问题

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

以下是我如何尝试做到这一点:

首先读入
.csv
文件,假设
case1\u case2.csv
然后将
.csv
文件的名称分为两部分 每个部分都指定给一个向量 结果是这样的:

xName=case1
yName=case2
在我将数据放入新列之后,我想将每一列重命名为case1和case2

为此,我尝试在
R
中使用rename函数,但没有将列重命名为
case1
case2
,而是将列重命名为
xName
yName

这是我的密码:

  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(.))

}
for(n/1:长度(dirNames)){
填充%子集(选择=xName)
Y值%select(其中(!str_detect(name(infle),xName)))%%>%stack()%%>%rename(yName=values,orbiats=ind)
最终形式%筛选器(完整的.cases()
}
如何确保变量
xName
yName
rename()函数中展开


谢谢

您没有提供一个可复制的示例,因此我将只是大致演示这个想法。
rename
函数是
dplyr
包的一部分

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

库(tidyverse)
df%重命名(!!y=x)#给出错误-需要使用:=
df%>%重命名(!!y:=x)#正确