数据框中一列中每行的函数

时间:2016-11-17 14:56:14

标签: r

如何处理数据帧中每一行的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)

不工作......

1 个答案:

答案 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函数。您还可以通过重复相关估计,将相关性整合到数据框中。与单词重复次数。