R语言 处理excal时关于列名中有空格的情况

本文介绍了在R语言中遇到列名包含空格导致的错误及两种解决方案。一种是利用反引号`包裹列名,如`SampleName`,另一种是在Excel中直接重命名列名后再导入。同时提到了R的rename()函数和基础函数names()也可用于重命名列。注意观察细节和基础操作对于避免这类问题的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在处理EXCAL表格的时候,遇到列名有空格的情况,引起报错,排查许久才明白是这个原因在成的。

处理pcr数据的时候,下机数据列名中有空格,对后续的处理造成影响。

解决办法有二:

> colnames(abcd)#处理pcr数据的时候,下机数据列名中有空格,对后续的处理造成影响。
 [1] "Well"                   "Well Position"          "Omit"                   "Sample Name"            "Target Name"            "Task"                  
 [7] "Reporter"               "Quencher"               "Quantity"               "Quantity Mean"          "Quantity SD"            "RQ"                    
[13] "RQ Min"                 "RQ Max"                 "CT"                     "Ct Mean"                "Ct SD"                  "Delta Ct"              
[19] "Delta Ct Mean"          "Delta Ct SD"            "Delta Ct SE"            "Delta Delta Ct"         "Automatic Ct Threshold" "Ct Threshold"          
[25] "Automatic Baseline"     "Baseline Start"         "Baseline End"           "Amp Status"             "Comments"               "Cq Conf"               
[31] "CQCONF"                 "PRFLOW"                 "HIGHSD"                 "Tm1"                    "Tm2"                    "Tm3"                   
[37] "Tm4"                   

第一种解决办法:

使用“`”符号括起来,例如:

> abcd2 <- abcd2 %>% # 列名空格造成报错
+     transmute(
+       CT,
+       sx = Sample Name,
Error: unexpected symbol in:
"      CT,
      sx = Sample Name"
> #将Sample Name用"`"括起来就能解决
> abcd <- abcd %>% 
+     transmute(
+       CT,
+       sx = `Sample Name`,
+       xm = `Target Name`,
+     )

这种基础不牢的造成的报错往往在一些细节上可以发现,例如当使用"$"去选择特定列的时候
R的补齐代码功能就提示我们这种情况该如何处理:

代码补齐功能可直接选择列名
选择Sample Name之后,补全的代码是:

> abcd$`Sample Name`
> [1] "u6" "u6" "u6" "u6" "u6" "u6" "u6" "u6" "u6" "u6" "u6" "u6" "u6"

平时多注意这些细节,可以帮助我们提升能力

第二种方法:

直接在excal中重命名,再重新读取,我管你啥语法呢,暴力解决
tidyverse包提供了rename()函数可以帮助我们对部分列进行重命名,已iris数据集为例:

> data <- iris[1:50,]
> head(data)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> #使用rename()函数更改列名
> data <- data %>% rename(abc = Sepal.Length)
> head(data)
  abc Sepal.Width Petal.Length Petal.Width Species
1 5.1         3.5          1.4         0.2  setosa
2 4.9         3.0          1.4         0.2  setosa
3 4.7         3.2          1.3         0.2  setosa
4 4.6         3.1          1.5         0.2  setosa
5 5.0         3.6          1.4         0.2  setosa
6 5.4         3.9          1.7         0.4  setosa
> #应当注意的是,更改后的名字应该放在前面,逻辑跟给函数赋值是一样的.
> #也可以将列名更改成带有特殊字符的,例如空格
> data <- data %>% rename(`a b c` = abc)
> head(data)
  a b c Sepal.Width Petal.Length Petal.Width Species
1   5.1         3.5          1.4         0.2  setosa
2   4.9         3.0          1.4         0.2  setosa
3   4.7         3.2          1.3         0.2  setosa
4   4.6         3.1          1.5         0.2  setosa
5   5.0         3.6          1.4         0.2  setosa
6   5.4         3.9          1.7         0.4  setosa
> 

当然R自带的基础函数names()也可以对列名进行更改,此处不再赘述。可以参阅此处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值