R:将函数应用于包含字符串的每一行数据帧

时间:2015-06-08 19:32:52

标签: r

很抱歉,这可能是重复的,但我在使用apply函数时遇到了不好的时间。我想将函数应用于数据集的每一行,其中函数将在两个字符串之间执行操作。例如:

(想象一下有两个列的数据框:t1& t2) "这是","这是一个测试" "我的头会爆炸","我喜欢我的头"

我有一个函数,它接受两个字符串并返回共同的单词数:

commonwords <- function(s1,s2) {
  return (length(intersect(strsplit(s1,split=" ")[[1]],strsplit(s2,split=" ")[[1]])))
}

(注意我还没有粘贴这个函数,我只是快速输入它给你一个indea所以语法可能是错误的!)

我只需要一种方法将该函数应用于数据帧的每一行,返回一个具有共同字数的新列。 然后可以将其扩展到两个字符串之间的任何其他操作。

非常感谢我的帮助,我认为这很快:)

路易斯。

1 个答案:

答案 0 :(得分:2)

首先,请花点时间创建一个可重现的示例并清理代码。

由于您要在两个变量之间应用操作,因此您应在此处使用mapply

xx <- 
data.frame(S1=c( "this is","my head will explode"),
           S2=c("this is a test", "i like my head"))

 mapply(commonwords,xx[,'S1'],xx[,'S2'])
         this is my head will explode 
               2                    2 

commonwords的位置:

commonwords <- function(s1,s2) {
  length(intersect(strsplit(s1,split=" ")[[1]],
                   strsplit(s2,split=" ")[[1]]))
}