用字符串中的字母替换数字
Replacing numbers with letters in string
我有一个 ID 列,其名称类似于“155AB3EA157A3466887D8F4B99BABC35”。我想用字母替换这些字符串中的数字。我试过使用 gsub
,但它会产生 "invalid text argument" 错误。我的代码如下所示:
as.character(df$ID)
gsub("1", "A", df$ID)
我应该补充一点,我正在使用 ff
包,因为数据非常大。
如果我们将数字 1-9 替换为字母 'A' 到 'I',那么 chartr
是一个选项
chartr('123456789', 'ABCDEFGHI', v1)
#[1] "AEEABCEAAEGACDFFHHGDHFDBIIBABCCE"
更新
刚刚注意到 OP 可能正在使用 ffdf
对象
library(ff)
library(ffbase)
在那种情况下,以常规方式应用函数会导致错误,如 OP 所述
gsub("1", "A", d$v1)
Error in gsub("1", "A", d$v1) : invalid 'text' argument
因此,我们可以使用 ffbase
中的 with.ffdf
或 within.ffdf
等专门提取函数
with.ffdf(d, gsub("1", "A", v1))
#ff (open) integer length=1 (1) levels: A55AB3EAA57A3466887D8F4B99BABC35
# [1]
#A55AB3EAA57A3466887D8F4B99BABC35
要替换数字 1-9,chartr
可以应用为
d$v1 <- with.ffdf(d, chartr('123456789', 'ABCDEFGHI', v1))
d
#ffdf (all open) dim=c(1,1), dimorder=c(1,2) row.names=NULL
#ffdf virtual mapping
# PhysicalName VirtualVmode PhysicalVmode AsIs #VirtualIsMatrix PhysicalIsMatrix PhysicalElementNo #PhysicalFirstCol PhysicalLastCol PhysicalIsOpen
#v1 v1 integer integer FALSE FALSE FALSE 1 1 #1 TRUE
#ffdf data
# v1
#1 AEEABCEAAEGACDFFHHGDHFDBIIBABCCE
数据
v1 <- "155AB3EA157A3466887D8F4B99BABC35"
d <- as.ffdf(data.frame(v1))
我有一个 ID 列,其名称类似于“155AB3EA157A3466887D8F4B99BABC35”。我想用字母替换这些字符串中的数字。我试过使用 gsub
,但它会产生 "invalid text argument" 错误。我的代码如下所示:
as.character(df$ID)
gsub("1", "A", df$ID)
我应该补充一点,我正在使用 ff
包,因为数据非常大。
如果我们将数字 1-9 替换为字母 'A' 到 'I',那么 chartr
是一个选项
chartr('123456789', 'ABCDEFGHI', v1)
#[1] "AEEABCEAAEGACDFFHHGDHFDBIIBABCCE"
更新
刚刚注意到 OP 可能正在使用 ffdf
对象
library(ff)
library(ffbase)
在那种情况下,以常规方式应用函数会导致错误,如 OP 所述
gsub("1", "A", d$v1)
Error in gsub("1", "A", d$v1) : invalid 'text' argument
因此,我们可以使用 ffbase
with.ffdf
或 within.ffdf
等专门提取函数
with.ffdf(d, gsub("1", "A", v1))
#ff (open) integer length=1 (1) levels: A55AB3EAA57A3466887D8F4B99BABC35
# [1]
#A55AB3EAA57A3466887D8F4B99BABC35
要替换数字 1-9,chartr
可以应用为
d$v1 <- with.ffdf(d, chartr('123456789', 'ABCDEFGHI', v1))
d
#ffdf (all open) dim=c(1,1), dimorder=c(1,2) row.names=NULL
#ffdf virtual mapping
# PhysicalName VirtualVmode PhysicalVmode AsIs #VirtualIsMatrix PhysicalIsMatrix PhysicalElementNo #PhysicalFirstCol PhysicalLastCol PhysicalIsOpen
#v1 v1 integer integer FALSE FALSE FALSE 1 1 #1 TRUE
#ffdf data
# v1
#1 AEEABCEAAEGACDFFHHGDHFDBIIBABCCE
数据
v1 <- "155AB3EA157A3466887D8F4B99BABC35"
d <- as.ffdf(data.frame(v1))