r - R gsub不适用于apply

标签 r error-handling apply sapply

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

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

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

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



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/

相关文章:

r - 在数据框底部创建一个新行并添加列总和

r - 使用 'mice' 调整 R 平方

python - 使yfinance错误传播

r - R 中意外的应用函数行为

R函数式编程: using apply family to calculate kernel matrix for gaussian processes

r - 规范化具有多个条件的数据帧,R

基于一行删除多行

excel - 从sub vs excel调用时,函数返回的值不同

error-handling - 带通配符的WorkflowError

r - 通过apply函数生成多个ggplot箱线图