我有以下代码行,其中所有字符都在“_”字符之后:
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/