R gsub不适用于申请

时间:2018-04-01 12:31:35

标签: r error-handling apply sapply

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

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

并且它工作正常。但是,当我尝试将它放入apply函数以便对dtt表中的所有id执行相同操作时,我遇到了以下错误:

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

get中的错误(as.character(FUN),mode =“function”,envir = envir)

DTT:

id等级

1_Tim 89

2_Jack 100

3_Jeff 55

1 个答案:

答案 0 :(得分:1)

这是你之后的事吗?

# 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"

或者,如果您要清除id中的dtt条目:

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