gpt4 book ai didi

r - R中数据框中数字的字母

转载 作者:行者123 更新时间:2023-12-02 17:19:17 28 4
gpt4 key购买 nike

我找到了下面的代码。它工作得很好,但当您涉及完整的字母表时更容易出错。

ID = c(1,2,3)
POS1 = c('AG','GC','TT')
POS2 = c('GT','CC','TC')
POS3 = c('GG','CT','AT')
DF = data.frame(ID,POS1,POS2,POS3)
DF$POS1X <- chartr('ACGT','1234',DF$POS1)

但是寻找不需要在代码中输入所有字母和数字的东西?让我们使用相同的数据框,我所追求的是一个将“a”转换为 1、“b”转换为 2 等的循环...

更新:为了不创建另一列而只是修改现有的 POS1,我在下面进行了尝试。我没有工作你。

ID = c(1,2,3)
POS1 = c('AG','GC','TT')
POS2 = c('GT','CC','TC')
POS3 = c('GG','CT','AT')
DF = data.frame(ID,POS1,POS2,POS3)

只需将 POS1 的因子更改为字符

DF$POS1  <- as.character(as.factor(DF$POS1))

map<-data.frame(LETTERS,as.character(1:26))
names(map)<-c("letters","numbers")

let2nums <- function(string){
splitme <- unlist(strsplit(string,""))
returnme <- as.integer(map[map$letters %in% splitme,]$numbers)
return(as.numeric(returnme))
}

DF$POS1 <- mapply(let2nums, DF$POS1)

结果很有趣 :) 知道为什么吗?

最佳答案

一个选择是创建一个键/值对,然后用 gsubfn 替换值

library(gsubfn)
v1 <- setNames(seq_along(LETTERS), LETTERS)
DF[-1] <- lapply(DF[-1], function(x) gsubfn('(.)', as.list(v1), as.character(x)))

关于r - R中数据框中数字的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44116092/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com