R gsub 不适用于 apply

R gsub doesn't work with apply

我有以下代码行,它接受“_”字符后的所有字符串:

gsub(" ","",unlist(strsplit(dtt$id,"[,_]")))[2]

并且有效 fine.However,当我尝试将其放入应用函数以便对 dtt table 中的所有 ID 执行相同操作时,我得到了以下结果错误:

apply(dtt,1,gsub(" ","",unlist(strsplit(dtt$id,"[,_]")))[2])

Error in get(as.character(FUN), mode = "function", envir = envir)

dtt:

id 年级

1_Tim 89

2_Jack 100

3_Jeff 55

这就是你想要的吗?

# Sample data
dtt <- read.table(text =
    "id grade
1_Tim 89
2_Jack 100
3_Jeff 55", header = T)

apply(dtt, 1, function(x) gsub(" ","", unlist(strsplit(x, "[,_]")))[2])
#[1] "Tim"  "Jack" "Jeff"

这里其实不需要apply。你可以这样做:

gsub("\d+_", "", dtt$id)
#[1] "Tim"  "Jack" "Jeff"

或者,如果您想 clean-up id 条目 dtt:

transform(dtt, id = gsub("\d+_", "", id));
#    id grade
#1  Tim    89
#2 Jack   100
#3 Jeff    55