很抱歉,这可能是重复的,但我在使用apply函数时遇到了不好的时间。我想将函数应用于数据集的每一行,其中函数将在两个字符串之间执行操作。例如:
(想象一下有两个列的数据框:t1& t2) "这是","这是一个测试" "我的头会爆炸","我喜欢我的头"
我有一个函数,它接受两个字符串并返回共同的单词数:
commonwords <- function(s1,s2) {
return (length(intersect(strsplit(s1,split=" ")[[1]],strsplit(s2,split=" ")[[1]])))
}
(注意我还没有粘贴这个函数,我只是快速输入它给你一个indea所以语法可能是错误的!)
我只需要一种方法将该函数应用于数据帧的每一行,返回一个具有共同字数的新列。 然后可以将其扩展到两个字符串之间的任何其他操作。
非常感谢我的帮助,我认为这很快:)
路易斯。
答案 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]]))
}