将函数应用于R中的多个列

将函数应用于R中的多个列,r,loops,R,Loops,我读了一些关于它的帖子,但仍然没有得到答案。我可能错过了一些简单的东西。我有这个功能 GoodmanKruskalGamma(mydata$item1, mydata$totalscore, conf.level=0.95) 但我希望自动将其应用到数据框中的其他列,而不是手动为每个项应用 GoodmanKruskalGamma(mydata$item1, mydata$totalscore, conf.level=0.95) GoodmanKruskalGamma(mydata$item2,

我读了一些关于它的帖子,但仍然没有得到答案。我可能错过了一些简单的东西。我有这个功能

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
我试过了,但没用

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{}
  }
})
###计算项目和Restscore之间的Kruskal Gamma###
结果3

应该做这个把戏

你能发布可复制的数据吗?
### 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{}
  }
})
for(coln in c('item1', 'item2', 'item3')) {
   GoodmanKruskalGamma(mydata[,coln], mydata$totalscore, conf.level=0.95)
}