如何处理数据帧中每一行的for循环计算函数,如下所示:
for (i in 1:nrow(stemmed2)){
stemmed2$stem[i] <- gsub('in ', 'in_', stemmed2$stem[i])
}
我试过这个
apply(stemmed2[1], 2, function(x) gsub('in ', 'in_', x))
我相信存在更有效的方式(比如apply或smth)。请帮我。
UPD。 好的,我明白了,谢谢!但我有另一个例子:
corr <- function(x){
df <- wd3[wd3$word==as.character(x),]
if (nrow(df) < 3) {return('0')}
else {
cor <- cor.test(df$star, df$count)
cor$estimate
}
}
然后
for (i in 1:nrow(wd3)) {
wd3$corr[i] <- corr(wd3$word[i])
}
在这种情况下
wd3$corr <- corr(wd3$word)
不工作......
答案 0 :(得分:0)
我认为这应该做你想要的:
corr <- function(x){
df <- iris[iris$Species == as.character(x), ]
if (nrow(df) < 3) {
return('0')
} else {
cor <- cor.test(df$Sepal.Length, df$Sepal.Width)
cor$estimate
}
}
corr("virginica")
corr("setosa")
correlation <- sapply(unique(iris$Species), corr)
# And if you want to integrate that to your data frame then this should do it:
iris$corr <- rep(correlation, each = table(iris$Species))
该函数正确地返回相关估计,但问题是你循环遍历单词向量的每个元素。您可以仅使用单词向量的唯一元素将其替换为sapply函数。您还可以通过重复相关估计,将相关性整合到数据框中。与单词重复次数。