2016-10-20 42 views
2

我有一個名爲StatesList(它是一個狀態列表)的數據框列表,並且我試圖從每個列中拉出兩列,然後求和它,並返還款項。這是我到目前爲止有:從數據框列表中使用函數並使用拉特定列

StatesList <- list(Alabam, Alask, Arizon, Arkansa, Californi, Colorado, Connecticu, Delawar, District_ColUmbi, Florid, Georgi, Hawai, Idah, Illinoi, Indian, Iow, Kansa, Kentuck, Louisian, Main, Marylan, Massachusett, Michiga, Minnesot, Mississipp, Missour, Montan, Nebrask, Nevad, New_Hamp, New_Jer, New_Mex, New_York, North_Carol, North_Dak, Ohi, Oklahom, Orego, Pennsylvani, Rhode_Isl, South_Carol, South_Dak, Tennesse, Texa, Uta,Vermon, Virgini, Washingto, West_Vir, Wisconsi, Wyomin) 

my_function <- function(x) { 

    c <- sum(x + $Clinton_Weighted) 
    t <- sum(x + $Trump_Weighted) 
    ans <- list(Clinton = c, Trump = t) 
    return(print(ans)) 
} 

lapply(StatesList, my_function(x)) 

我知道x + $Clinton_Weighted將無法​​正常工作,但我不知道會出現什麼。 如何取出函數代碼中的特定列?並試圖將每個列表的名稱與$以及期望的列組合在一起是一個壞主意?

+0

我認爲如此,如果所有列的成對總和意味着兩列的總和形成打印在列表中的每個狀態。 – Travasaurus

+0

對不起,我不確定你的代碼是什麼意思。 (我不是超級經驗與R)但是,什麼是所需的輸出會看起來就像是這樣的: '[1] #for阿拉巴馬 克林頓特朗普 87.5 78.4 [2] #for阿拉斯加州 克林頓特朗普 67.5 98.4' 。 。 。 一路向下的狀態列表。 這有幫助嗎? – Travasaurus

+0

'[1]#阿拉巴馬克林頓特朗普57.5,48.4 [2]#阿拉斯加克林頓特朗普27.5,68.4。 。 。其中數字是列表內數據框內列的總和。 – Travasaurus

回答

0

這裏有一個簡單的方法來做到這一點使用的lapplyapply組合:

# Create sample data 
cols = list(Clinton = 1:10, Trump = 10:1, SomeoneElse = 21:30) 

Alabama = data.frame(cols) 
Alaska = data.frame(cols) 
Arison = data.frame(cols) 
Arkansa = data.frame(cols) 
Californi = data.frame(cols) 

df_list = list(Alabama, Alaska, Arison, Arkansa, Californi) 

dataframes的名單看起來是這樣:

df_list 
[[1]] 
    Clinton Trump SomeoneElse 
1  1 10   21 
2  2  9   22 
3  3  8   23 
4  4  7   24 
5  5  6   25 
6  6  5   26 
7  7  4   27 
8  8  3   28 
9  9  2   29 
10  10  1   30 

[[2]] 
    Clinton Trump SomeoneElse 
1  1 10   21 
2  2  9   22 
3  3  8   23 
4  4  7   24 
5  5  6   25 
6  6  5   26 
7  7  4   27 
8  8  3   28 
9  9  2   29 
10  10  1   30 

[[3]] 
    Clinton Trump SomeoneElse 
1  1 10   21 
2  2  9   22 
3  3  8   23 
4  4  7   24 
5  5  6   25 
6  6  5   26 
7  7  4   27 
8  8  3   28 
9  9  2   29 
10  10  1   30 

[[4]] 
    Clinton Trump SomeoneElse 
1  1 10   21 
2  2  9   22 
3  3  8   23 
4  4  7   24 
5  5  6   25 
6  6  5   26 
7  7  4   27 
8  8  3   28 
9  9  2   29 
10  10  1   30 

[[5]] 
    Clinton Trump SomeoneElse 
1  1 10   21 
2  2  9   22 
3  3  8   23 
4  4  7   24 
5  5  6   25 
6  6  5   26 
7  7  4   27 
8  8  3   28 
9  9  2   29 
10  10  1   30 

現在總結數據框的列並將其應用於數據幀列表:

# Choose the columns to extract the sum of 
cols = c("Clinton", "Trump") 

lapply(df_list, function(x) apply(x[cols], 2, sum)) 

下面是返回的列表

[[1]] 
Clinton Trump 
    55  55 

[[2]] 
Clinton Trump 
    55  55 

[[3]] 
Clinton Trump 
    55  55 

[[4]] 
Clinton Trump 
    55  55 

[[5]] 
Clinton Trump 
    55  55 
[[1]] 
Clinton Trump 
    55  55 

[[2]] 
Clinton Trump 
    55  55 

[[3]] 
Clinton Trump 
    55  55 

[[4]] 
Clinton Trump 
    55  55 

[[5]] 
Clinton Trump 
    55  55 
+0

@Travasaurus這是所需的輸出? – useR

相關問題