首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列名或异常更改为strsplit

将列名或异常更改为strsplit
EN

Stack Overflow用户
提问于 2014-01-04 00:43:34
回答 3查看 680关注 0票数 0

我有一个基因型数据框,它有一列标记为D2S1338,D2S1338.1,CSF1PO,CSF1PO.1,五角星D,五角星D.1的基因座。这些名称是在我将Excel电子表格导入R时自动生成的,因此对于标记为CSF1PO的两列,具有第一组等位基因的列被标记为CSF1PO,第二列被标记为CSF1PO.1。这很好用,直到我得到了在Excel中列出了一个空格并导入为Penta.D的Penta D为止。当我应用以下代码时,Penta.D与Penta.C和Penta.E组合在一起,给出了无意义的结果:

代码语言:javascript
复制
locuses = unique(unlist(lapply(strsplit(names(Freqs), ".", fixed=TRUE), function(x) x[1]))) 
Expected <- sapply(locuses, function(x) 1 - sum(unlist(Freqs[grepl(x, names(Freqs))])^2))

这段代码适用于除五角星以外的所有位置,因为它们是自动命名的。我如何为PentaC、PentaD和PentaE中的strsplit编写异常,或者将这些名称更改为strsplit,以便上面的代码按预期工作?我运行以下代码行:

代码语言:javascript
复制
Genotypes <- transform(Genotypes, rename.vars(Genotypes, from="Penta.C", to="PentaC", info=TRUE))

它告诉我:

代码语言:javascript
复制
Changing in Genotypes             
From: Penta.C
To:   PentaC 

但当我查看基因型时,它仍然将我的五角形基因位点写成了五角形。我以为这个函数会把它写回原始数据帧,而不仅仅是一个副本。这里我漏掉了什么?谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2014-01-04 00:56:44

代码的第一行是将变量名拆分为。并提取第一块。这听起来像是你想要拆分。并提取除最后一块以外的所有部分:

代码语言:javascript
复制
locuses = unique(unlist(lapply(strsplit(names(Freqs), ".", fixed=TRUE),
                               function(x) paste(x[1:(length(x)-1)], collapse=""))))
票数 1
EN

Stack Overflow用户

发布于 2014-01-04 06:46:34

看起来您想要删除".n“,其中n是一个数字,当且仅当它出现在行尾时。

代码语言:javascript
复制
loci.columns <- read.table(header=F, 
                           text="D2S1338,D2S1338.1,CSF1PO,CSF1PO.1,Penta.D,Penta.D.1", 
                           sep=",")

loci <- gsub("\\.\\d$",replace="",unlist(loci.columns))
loci
# [1] "D2S1338" "D2S1338" "CSF1PO"  "CSF1PO"  "Penta.D" "Penta.D"
loci <- unique(loci)
loci
# [1] "D2S1338" "CSF1PO"  "Penta.D"

gsub(...)中,\\.匹配".",\\d匹配任何数字,$强制匹配在行尾。

票数 0
EN

Stack Overflow用户

发布于 2014-01-06 04:19:54

基本的问题似乎是make.names函数在导入时使名称“有效”

代码语言:javascript
复制
> make.names("Penta C")
[1] "Penta.C"

避免使用read.tablecheck.names=FALSE参数对R的列重命名。如果显式引用列,则需要提供反引号字符串

代码语言:javascript
复制
df$`Penta C`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20908548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档