R 并行gsub:如何删除向量中每个元素中的不同字符串
我有一个客人名单,在一列中有姓,然后在另一列中我有家里每个人的名字或全名(第一个空格最后一个)。我想让另一列只知道名字R 并行gsub:如何删除向量中每个元素中的不同字符串,r,replace,gsub,R,Replace,Gsub,我有一个客人名单,在一列中有姓,然后在另一列中我有家里每个人的名字或全名(第一个空格最后一个)。我想让另一列只知道名字 gsub(guest.w$Last.Name,"",guest.w$Party.Name.s.) 如果我只有一行,那么这将非常有效,但是如何为数据帧中的每一行这样做呢。我必须写一个for循环吗?有没有类似于pmax()与max()关联的方式并行执行 我的问题在某种程度上类似于a,但与我的问题相比,那个问题是小菜一碟 实例 : 史密斯;乔·史密斯、凯文·史密斯、简·史密斯 改变
gsub(guest.w$Last.Name,"",guest.w$Party.Name.s.)
如果我只有一行,那么这将非常有效,但是如何为数据帧中的每一行这样做呢。我必须写一个for循环吗?有没有类似于pmax()与max()关联的方式并行执行
我的问题在某种程度上类似于a,但与我的问题相比,那个问题是小菜一碟
实例
:
史密斯;乔·史密斯、凯文·史密斯、简·史密斯改变罗伯特·奥尔特、玛丽·奥尔特、罗纳德·奥尔特 变成 史密斯;乔、凯文、简
改变Robert,Mary,Ronald我不确定它是否能在数据帧上工作,但您可以尝试以下应用功能之一:
`y1 <- sapply(dataframe, gsub(guest.w$Last.Name,"",guest.w$Party.Name.s.))`
`y1使用hadleys adply:
library(plyr)
df <- data.frame(rbind(c('Smith', 'Joe Smith, Kevin Smith, Jane Smith'), c('Alter', 'Robert Alter, Mary Alter, Ronald Alter')))
names(df) <- c("last", "name")
adply(df,1,transform, name=gsub(last, '', name))
库(plyr)
df为了使apply()函数正常工作,您可能需要对表达式进行一些“包装”:
- 如果在data.frame上工作,则应使用apply()(而不是sapply())
- 必须为apply创建一个函数(带有return子句)
- 将data.frame行作为函数输入有点棘手-它们被转换为向量,并失去一些属性(不能使用$sign调用命名字段),因此最好先将其转换为列表
最终结果如下所示:
df <- rbind(c('Smith', 'Joe Smith, Kevin Smith, Jane Smith'), c('Alter', 'Robert Alter, Mary Alter, Ronald Alter'))
colnames(df) = c('Last.Name', 'Party.Name.s.')
apply(df,1,function(y) {y = as.list(y);return(gsub(y$Last.Name, "", y$Party.Name.s.))})
df sapply(guest.w,gsub(guest.w$Last.Name,”,guest.w$Party.Name.s.))没有。我在match.fun(fun)中尝试了这个错误:'gsub(guest.w$Last.Name,”,guest.w$Party.Name.s.)不是函数、字符或符号,另外:警告消息:在gsub(guest.w$Last.Name,“,guest.w$Party.Name.s.):参数“pattern”的长度大于1,将仅使用第一个元素