簡體   English   中英

成對 t 測試循環遍歷列表中包含的數據幀

[英]Pairwise t test loop through dataframes contained in a list

我有一個非常大的 dataframe,其構建如下: Originaldf

我想在項目 A 中執行成對 t 檢驗,比較條件組內的測量值。 所以我想看看對於與項目 A 相關的所有觀察結果,對照組、測試組和安慰劑組(條件)的測量值之間是否存在差異。

我做的第一件事是使用 dplyr 的過濾器 function 將 dataframe 拆分為一個列表。

Listdf <- split(originaldf, Item)

這行得通,我得到了一個包含 82 個元素的列表,其中一個 dataframe 對應於原始 dataframe 中的每個項目。

我現在正在嘗試對列表的每個元素執行 pairwise.t.test function。 我對 R 比較陌生,並認為為這個過程編寫一個循環雖然效率低下,但可以幫助我了解背景情況。 我知道還有使用 lapply function 的選項。 我使用以下代碼在 Listdf 上進行了嘗試,我知道這很可能過於簡單,但值得一試。 lapply(Listdf, pairwise.t.test(Value, Condition))

但是,我在因子(g)中收到錯誤錯誤:未找到 object 'Condition'。 不確定是否有辦法更具體地引用 Condition 以便可以找到它。 我已經對使用以下代碼的項目之一執行了單獨的 pairwise.t.test。

pairwise.t.test(List$ItemA$Value, List$ItemA$Condition, p.adjust.method = "none")

但是,我認為這在 lapply function 中不起作用,因為我希望它對 ItemA、ItemB、ItemC 等執行 t.test...

到目前為止我嘗試過的循環如下:

for (i in Listdf) {
 pairwise.t.test(List$i$logAddedConstant, List$i$Condition, p.adjust = "none")
}

為此,我收到錯誤“split.default(X,組)中的錯誤:第一個參數必須是向量”我相信這個錯誤對應於原始 dataframe 的原始拆分。 但是我不太明白為什么這個錯誤會在代碼中出現這么晚,因為 dataframe 的拆分沒有問題。

我知道我可能遺漏了一些基本的東西,但我很困惑,嘗試了多種選擇都無濟於事。 如果有人有其他想法或建議,我將非常感謝您的幫助。 如果我應該添加更多信息,請告訴我。

我做了一個非常簡短的 data.frame 示例,它的結構與您的 originaldf 一樣

df <- data.frame(Item = c("A", "B", "C", "A", "B", "C"), 
                 Value=runif(6), 
                 Condition=c("Control","Control","Control", "Test", "Test", "Test"))

Listdf <- split(df, df$Item)

使用簡單的 for 循環

p <-list()
for (i in 1:length(Listdf)) {
  p[[i]] <- pairwise.t.test(Listdf[[i]]$Value, Listdf[[i]]$Condition, p.adjust = "none")
}

使用 lapply

p <- lapply(1:length(Listdf), function(x) {pairwise.t.test(Listdf[[x]]$Value, Listdf[[x]]$Condition, p.adjust = "none")})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM