Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 并行gsub:如何删除向量中每个元素中的不同字符串_R_Replace_Gsub - Fatal编程技术网

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,将仅使用第一个元素