Применить функцию к более чем одному столбцу в R - PullRequest
0 голосов
/ 01 июня 2018

Я прочитал несколько постов об этом, но до сих пор не получил ответ.Это, наверное, что-то простое, что мне не хватаетУ меня есть функция

GoodmanKruskalGamma(mydata$item1, mydata$totalscore, conf.level=0.95)

Но я бы хотел применить ее автоматически к другим столбцам в моем фрейме данных, а не делать это вручную для каждого элемента

GoodmanKruskalGamma(mydata$item1, mydata$totalscore, conf.level=0.95)
GoodmanKruskalGamma(mydata$item2, mydata$totalscore, conf.level=0.95)
GoodmanKruskalGamma(mydata$item3, mydata$totalscore, conf.level=0.95)

Может кто-нибудь помочь мне, каксоздать цикл?Есть ли другой полезный способ сделать это?

Спасибо!

* решено *

Мне удалось использовать этот код, чтобы найти решение

install.packages("magicfor") #Install Magicfor
library(magicfor) #Load Magicfor package
magic_for(print, silent = TRUE) #Load Magic for
for(coln in c(2:41)) {
  print(GoodmanKruskalGamma(newdata[,coln], newdata$totalscore, conf.level=0.95))
} #Perform loop
results <- magic_result_as_dataframe() #Storage results
results #Show results

* ДОПОЛНИТЕЛЬНЫЙ ВОПРОС *

Как я могу сделать код для корреляции между парами столбцов?Например, между элементом и его restscore?

GoodmanKruskalGamma(mydata$item1, mydata$restscore1, conf.level=0.95)
GoodmanKruskalGamma(mydata$item2, mydata$restscore2, conf.level=0.95)

Я пробовал это, но не работало

for(coln in c(2:41)) {
    for(coln2 in c(48:87)) {
  print(GoodmanKruskalGamma(newdata[,coln], newdata[,coln2], conf.level=NA))}  
  } #Perform loop

РЕДАКТИРОВАТЬ: я нашел второе решение, для тех, кто заинтересован

### Calculate Kruskal Gamma between Item and Restscore ###

results3 <- capture.output(
for(coln in c(2:41)) {
  for(restn in c(43:82)) {
  if(coln + 41 == restn){
  print(GoodmanKruskalGamma(newdata[,coln], newdata[,restn], conf.level=NA))
  }else{}
  }
})

1 Ответ

0 голосов
/ 01 июня 2018
for(coln in c('item1', 'item2', 'item3')) {
   GoodmanKruskalGamma(mydata[,coln], mydata$totalscore, conf.level=0.95)
}

должен сделать трюк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...