我有一個數據幀中的每個元素,我想通過使用我寫稱爲「組1」的功能,以變換第一列:ddply /變換不適功能爲一個字符向量
group1 <- function(x) {
temp <- strsplit(x,"_")[[1]][2]
temp <- gsub("Yellow", "", temp)
temp <- gsub("Blue", "", temp)
as.numeric(temp)
}
對於例如,在字符串「MHY_Blue23_Yellow16_11A」上應用這個函數應該得到結果23.當輸入只是一個字符串時的確如此,但是當我嘗試將這個函數應用於字符向量時,出現了一些問題。我試圖用「改造」,使其每個元素的矢量工作:
data_ling_RT2 <- transform(data_ling_RT, Group1 = group1(Code_Trials)))
而是獲得一個數據幀有一個名爲「組1」的新列,它取決於各自的元素在「Code_Trials」 ,我得到「Group1」中的所有元素僅基於「Code_Trials」的第一個元素。我想這與我編寫「group1」的方式有關,但我找不到我做錯了什麼。 使用ddply更糟 - 有時甚至在「Group1」列中甚至沒有任何東西...
我非常感謝您的幫助!
謝謝,akrun!有效。 所以我的謬誤是我有一個列表,並且ddply和轉換不是要在列表元素上工作,而是在數據框上工作。對?我可以讓它和llply一起工作嗎? 另外,你能否解釋'sapply(temp,'[',2)''中的第二個參數? 'gsub('\\ D +','',temp)''中的第一個參數? 非常感謝。 PS - 該函數既包含「黃色」又包含「藍色」,因爲輸入有時具有「藍色」,有時在其第二個參數中具有「黃色」。 – Galit
@Galit'ddply'在data.frame上工作,''llply'在列表上工作,返回輸出也是一個列表。 'sapply(temp,'[',2)'返回每個列表元素的第二個元素,因爲'strsplit'返回一個'list'。 'gsub''\\ D +'匹配所有非數字字符並且替換爲''''。如果這適用於您,請考慮通過點擊投票旁邊的勾號來接受解決方案。 – akrun
謝謝@akrun,我不知道你可以使用'['或'[['作爲* apply中的函數。這真的很有幫助! – Galit