Примените функцию к списку фреймов данных, а затем привяжите к соответствующему фрейму данных

Проблема: два фрейма данных, каждый из которых содержит три столбца, но разное количество строк.

>view(archae_pro)
motif obs pred
AAB 1189 760.1757
CDD 1058 249.7147
DDE 771 415.1314
FBB 544 226.3529

>view(archae_end)
motif obs pred
ABG 1044 749.4967
GBC 634 564.5753
AGG 616 568.7375
CGG 504 192.5312
BTT 404 200.4589

Я хочу выполнить тест на соответствие хи-квадрат. Кроме того, вычислите стандартизированные остатки и привяжите их к соответствующим фреймам данных. То, что я пробовал, следующее:

df.list <- list (
  df_archae_pro, 
  df_archae_end,
)+

prop <- lapply(df.list, function (x) cbind(x$pred/sum(x$pred)))
chisquare <- lapply(df.list, function(x) chisq.test (x$obs, p=prop))  

Rstudio выдает ошибку

Error in chisq.test(x$obs, p = prop) : 
'x' and 'p' must have the same number of elements

Мои два копейки по ошибке: chisq.test почему-то не читает "проп", соответствующий правильному data.frame?!

Я только начал изучать rstudio несколько дней назад, так что извините за очевидные ошибки.

Я также был бы признателен за любую помощь в вычислении стандартизованных остатков и привязке их столбцов к кадрам данных.

Помните, что RStudio — это IDE для языка R. Итак, R выдает ошибку, и вы изучаете R.

Parfait 17.05.2022 21:47

@Parfait: Спасибо за указание. Р это :)

Jalan 17.05.2022 21:49
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
2
16
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто добавьте первый аргумент в cbind с именованным аргументом для нового столбца, prop, во второй аргумент, присваивая результат обратно df.list, поскольку вы добавляете новый столбец в каждый фрейм данных.

Затем в следующем вызове добавьте квалификатор объекта x$ к prop для ссылки на столбец в тесте:

df.list <- lapply(df.list, function(x) 
    cbind(x, prop=x$pred/sum(x$pred))
) 

chisquare <- lapply(df.list, function(x)
    chisq.test(x$obs, p=x$prop)
) 

Чтобы присвоить результаты теста, cbind извлеченные значения:

df.list <- lapply(df.list, function(df) {
    results <- chisq.test(df$obs, p=df$prop)

    cbind(
        df, 
        stat = results$statistic, 
        pval = results$p.value,
        stdres = results$stdres
    )
}) 

Это элегантно. Спасибо! Я отмечаю, что вывод «хи-квадрат списка 2» содержит параметр «stdres». Это стандартизированный остаток? Как связать его с соответствующими фреймами данных? Возможно, кому-то нравится,

Jalan 17.05.2022 22:04

См. расширенное редактирование.

Parfait 17.05.2022 22:33

Другие вопросы по теме