【发布时间】:2017-03-01 19:52:26
【问题描述】:
我有一个名为 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 不起作用,但我不确定什么会起作用。
如何在函数代码中提取特定列?并且尝试将每个列表的名称与 $ 和所需的列结合起来是个坏主意吗?
【问题讨论】:
-
我想是的,如果所有列的成对总和意味着从列表中打印出的每个状态的两列的总和。
-
对不起,我不确定你所说的代码是什么意思。 (我对 R 不是超级有经验)但是期望的输出看起来像这样:
[1] #for alabama Clinton Trump 87.5 78.4 [2] #for alaska Clinton Trump 67.5 98.4。 . .一直在状态列表中。这有帮助吗? -
[1] #for alabama Clinton Trump 57.5, 48.4 [2] #for alaska Clinton Trump 27.5, 68.4 . . .其中数字是列表内数据框内的列的总和。 -
很公平,对此感到抱歉。我会尝试弄清楚如何做到这一点,并在这里举一个例子。
-
您为
sum考虑的两列在所有州是否都相同,如果是,您可以将列名称传递给函数my_function <- function(x="Alabama",colName1="alpha") { c <- sum(x[,colName1] + x[,"Clinton_Weighted"] ...) }