2012-01-18 2 views
6

Я хочу, чтобы применить статистику к столбцам dataframe в итерированном моды:R итерации по столбцам dataframe

колонны номер 1: «A» представляет тег, которые я хочу различать:

for (i in names(dataframe)) { 
    i <- as.name(i) 
    group1 <- i[A=="locationX"] 
    group2 <- i[A!="locationX"] 
    p <- wilcox.test(group1,group2,na.action(na.omit))$p.value 
} 

однако, as.name() должен попытаться удалить перевернутые запятые из названий столбцов, сгенерированных names(dataframe).

К сожалению, это дает мне ошибку:

Error in i[A == "locationX"] : object of type 'symbol' is not subsettable

Я думаю as.name() не правильный способ сделать это.

Любые подсказки?

+1

вы можете привести пример 'A', а также, возможно,' head (dataframe) '(который просто дает нам возможность взглянуть на ваш dataframe)? –

ответ

8

Единственный способ это имеет смысл, если для «A», чтобы быть вектором с несколькими экземплярами «locationX» и множественного экземпляра обратного и для длины «A», чтобы быть таким же, как количество строк в «dataframe». Если это так, то что-то подобное может работать:

p <- list() 
for (i in names(dataframe)) { 
    # using as.names not needed and possibly harmful 
    group1 <- dataframe[[i]][A == "locationX"] 
    group2 <- dataframe[[i]][A != "locationX"] 
    p[i] <- wilcox.test(group1,group2,na.action(na.omit))$p.value 
} 

Обратите внимание, что даже если вы не получите сообщение об ошибке с кодом, который вы все равно были бы перезаписью «р» каждый раз через петлю.

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