我有以下代码行,其中所有字符都在“_”字符之后:

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

而且它工作正常。但是,当我尝试将其放入apply函数中以便对dtt表中的所有id都执行相同操作时,出现以下错误:
apply(dtt,1,gsub(" ","",unlist(strsplit(dtt$id,"[,_]")))[2])



dtt:

id等级

1_提姆89

2_ jack 100

3_杰夫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"

或者,如果您要清理id中的dtt条目,请执行以下操作:
transform(dtt, id = gsub("\\d+_", "", id));
#    id grade
#1  Tim    89
#2 Jack   100
#3 Jeff    55

关于r - R gsub不适用于apply,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49598065/

10-13 04:23