2017-01-13 14 views
1

Я вычисляю ICC для 301 переменных из 2 считывателей. Результаты сохраняются в двух файлах по 301 столбцам. Первый столбец file1 (reader1 $ Var1) соответствует первому столбцу файла2 (reader2 $ Var302). Я могу выполнить ICC вручную (см. Ниже), но мне нужна помощь для автоматизации этого процесса с помощью применения или цикла. Спасибо.R: вычисление ICC через несколько столбцов в двух информационных кадрах

library(irr) 
irr::icc() 
a= data.frame(reader1$Var1) 
b= data.frame(reader2$Var302) 
X= data.frame (a,b) 
function.ICC <- function (X) {irr::icc(X, model =c("oneway"), type = c("consistency"), unit =("single"), r0 = 0, conf.level = 0.95)} 
Results <- function.ICC(X) 
Results[7] 

ответ

0

Сочетание lapply и do.call может сделать для вашего дела (хотя есть довольно много вариантов). Вы не обеспечивают выборку данных, поэтому я предполагаю, что вы сначала сделать cbind ваших 2 dataframes один за другим, так что в этом примере игрушечной

> X = data.frame(cbind(1:10, 11:20, 21:30, 21:30)) 
> X 
    X1 X2 X3 X4 
1 1 11 21 21 
2 2 12 22 22 
3 3 13 23 23 
4 4 14 24 24 
5 5 15 25 25 
6 6 16 26 26 
7 7 17 27 27 
8 8 18 28 28 
9 9 19 29 29 
10 10 20 30 30 

вы хотели бы запустить icc из X1 против X3 и X2 по сравнению с X4. Было бы что-то вроде следующего, опираясь на function.ICC, как вы определили его:

> do.call(cbind, lapply(1:2, function(i) function.ICC(X[,c(i, i+2)]))) 
      [,1]   [,2]   
subjects 10   10   
raters  2    2    
model  "oneway"  "oneway"  
type  "consistency" "consistency" 
unit  "single"  "single"  
icc.name "ICC(1)"  "ICC(1)"  
value  -0.8320611 -0.4634146 
r0   0    0    
Fvalue  0.09166667 0.3666667  
df1  9    9    
df2  10   10   
p.value 0.9993158  0.926668  
conf.level 0.95   0.95   
lbound  -0.9526347 -0.8231069 
ubound  -0.4669701 0.1848105 

Итак, для cbind'ed dataframes с 301 колоннами, omething похоже на это должно работать:

do.call(cbind, lapply(1:301, function(i) function.ICC(X[,c(i, i+301)]))) 

 Смежные вопросы

  • Нет связанных вопросов^_^