我有一个名为“155AB3EA157A3466887D8F4B99BABC35”的ID列。我想用字母替换这些字符串中的数字。我已尝试使用gsub
,但它会产生“无效的文本参数”错误。我的代码如下所示:
as.character(df$ID)
gsub("1", "A", df$ID)
我应该补充说我正在使用ff
包,因为数据非常大。
答案 0 :(得分:2)
如果我们将字母1-9替换为字母'A'替换为'I',那么chartr
是一个选项
chartr('123456789', 'ABCDEFGHI', v1)
#[1] "AEEABCEAAEGACDFFHHGDHFDBIIBABCCE"
注意到OP可能正在使用ffdf
对象
library(ff)
library(ffbase)
在这种情况下,以常规方式应用函数会导致错误,如提到的OP
gsub("1", "A", d$v1)
gsub中的错误(“1”,“A”,d $ v1):无效的'text'参数
因此,我们可以使用with.ffdf
within.ffdf
或ffbase
等专门的提取函数
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))