我是R
的新手并遇到问题
我正在尝试重新格式化一些数据,并且在此过程中我想重命名新数据集的列。
这是我试图这样做的方式:
首先读入.csv
文件,让我们说case1_case2.csv
然后.csv
文件的名称分为两部分
每个部分都分配给一个向量
所以它最终会像这样:
xName=case1
yName=case2
我将数据放入新列后,我想将每列重命名为case1和case2
要执行此操作,我尝试使用R
中的重命名功能,但不是重命名为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(.))
}
如何确保变量xName
和yName
在rename()
函数内展开
感谢。
答案 0 :(得分:2)
您没有提供可重复的示例,因此我只是展示了这个想法。 rename
函数是dplyr
包的一部分。
你需要&#34;取消引用&#34;包含要用作新列名的字符串的变量。非引号运算符为!!
,您需要使用特殊的:=
赋值运算符来允许左侧的不引号。
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