2017-05-14 61 views
-1

考慮以下代碼lapply,rowSums和P將參數

lapply(lst,rowSums) 

lst是數據幀的列表。每個數據幀有,例如,四個列和十個行。我想在每一行中添加列的值,但是,我不希望在總和中包含第一列的值。因爲我覺得for循環長相醜陋和低效

lst_sum = list() 
for (ii in c(1,5)) 
{ 
dummy <- lst[[ii]] 
dummy <- rowSums(dummy[,seq(2,4,by = 1)]) 
lst_sum[[ii]] = dummy 
} 

我想用lapply或類似的功能:

我可以用一個for環和下面的代碼。

+1

嘗試像'lapply(LST,函數(X)rowSums(X [-1]))'?對於你所需要的更完全可重複的例子是:'df < - data.frame(x = 1:10,y = 1:10,z = 1:10); l = list(df,df,df,df,df); (l,function(x)rowSums(x [,-1]));' – Gopala

+0

你是說'Reduce(「+」,lst)''不清楚沒有一個可重複的例子或者嘗試'lapply(lapply lst,「[」,-1),rowSums)' – akrun

回答

0

隨着意見的幫助下,我得到這個解決方案:

lapply(lst,function(x) rowSums(x[,seq(2,4,by = 1)]))