2015-07-02 2 views
-1

У меня есть этот кусок кода, который нуждается в некотором упорядочении:код очистки в R

SlopeSBS00<-lm(SBSNy$SBS00[c(1:10,17:41)] ~ Numbers[c(1:10,17:41)])$coeff[2] 
SlopeSBS01<-lm(SBSNy$SBS01[c(1:10,17:41)] ~ Numbers[c(1:10,17:41)])$coeff[2] 
SlopeSBS02<-lm(SBSNy$SBS02[c(1:10,17:41)] ~ Numbers[c(1:10,17:41)])$coeff[2] 
SlopeSBS03<-lm(SBSNy$SBS03[c(1:10,17:41)] ~ Numbers[c(1:10,17:41)])$coeff[2] 
... 
SlopeSBS23<-lm(SBSNy$SBS23[c(1:10,17:41)] ~ Numbers[c(1:10,17:41)])$coeff[2] 

Здесь SBSNy это трансформированный вариант переменной SBS, которая нормализуется, и чисел вектор чисел от 1:41. Итак, в основном, что делает этот код для каждой строки, выполняется линейная регрессия SBSNy для каждого SBS00 для SBS23, для столбцов 1:10 и 17:41. Coeff [2] экспортирует только Склон, который здесь необходим.

Я забыл добавить что-то

SlopeSBS00 к SlopeSBS23 должен быть объединены в data.frame: что-то вроде этого: SlopeSBS < -data.frame (SlopeSBS00, SlopeSBS01, ..., SlopeSBS23)

Очень ценивший любую форму руководства или помочь с этой частью кода примера

данных

SBSNy содержит data.frame с 41 наблюдений и 25 переменных:

Numbers SBS00 SBS01 SBS02 ... SBS23 
1   1.600 1.735 1.644 ... 1.328 
2   1.486 1.692 1.522 ... 1.301 
3   1.421 1.597 1.370 ... 1.321 
...  ...  ...  ...  ... ... 
41   1.286 1.395 1.182 ... 1.206 

В качестве примера на коде для производства данных, хотя эти данные с диапазоном от 0-100:

df1 <- as.data.frame(matrix(sample(0:100,24*41,replace=TRUE),nrow=41, ncol=24)) 
Numbers <-c(1:41) 
SBSNy<-data.frame(Numbers,df1) 
names(SBSNy)<-c("Numbers",sprintf('SBS%02d',0:23)) 
+2

Try 'data.frame (lapply (SBSNy [с (1: 10,17: 41), - 1], функция (x) lm (x ~ SBSNy $ Числа [ c (1:10, 17:41)]) $ coef [2])) ' – akrun

ответ

1

Предполагая, что "SBS00" ваша secont колонка на фрейме данных "SBSNy":

for (x in 1:23){ 
    if (x < 10){ 
    var <- paste0("SBS0", x) 
    } else { 
    var <- paste0("SBS", x) 
    } 

     assign(paste0("Slope", var), lm(SBSNy[c(1:10,17:41), x+1] ~ Numbers[c(1:10,17:41)])$coeff[2]) 
} 
# Untested code 
Смежные вопросы