2017-10-12 118 views
1

我試圖通過柱2在一data.frame增加一列,並且具有新的列的輸出是第3列的劃分的列表劃分列,這裏是一個例子:作爲R

mylist <- list(a=c(0,1,2),b=c(0,2,3),c=c(0,4,5)) 

這個回報:

$a 
[1] 0 1 2 

$b 
[1] 0 2 3 

$c 
[1] 0 4 5 

我想回:

$a 
[1] 0 1 2 2 

$b 
[1] 0 2 3 1.5 

$c 
[1] 0 4 5 1.25 

請幫助

回答

1

我們可以通過listlapply迴路,由第二劃分第三元件和連接具有原vector

lapply(mylist, function(x) c(x, x[3]/x[2])) 
+0

謝謝你的迴應 - 它在這個例子中完美的工作。但是,這似乎不適用於我具有的特定數據框架 - 我試圖使用彭博API來解決問題,但似乎數據以奇怪的格式顯示。即'data < - bdh(c(「MA EQUITY」,「FB EQUITY」),c(「IS010」,「IS033」),start.date = Sys.Date() - 365.25 * 2,options = opt,覆蓋= ovrd)'有''data.frame'的'摘要':\t 7 obs。 3個變量: $ date:Date,format:「2015-12-31」「2016-03-31」「2016-06-30」「2016-09-30」... $ IS010:num 2517 2446 2694 2880 2756 ... $ IS033:號碼1107 1348 1380 1670 1363 ...' – lionbow12

+0

道歉格式 – lionbow12

+1

@ lionbow12您提供的原始示例只是一個列表。沒有任何數據框。如果您接受akrun的答案,然後發佈一個新問題,並以適當的例子反映數據的真實結構,那麼可能會更好。 – www

1

我們可以使用purrr包。

library(purrr) 

map(mylist, ~c(., .[3]/.[2])) 
$a 
[1] 0 1 2 2 

$b 
[1] 0.0 2.0 3.0 1.5 

$c 
[1] 0.00 4.00 5.00 1.25 
+0

或使用tidyverse:'mylist%>%map(function(x)c(x,x [3]/x [2]))' – Jimbou

+1

@Jimbou感謝您的評論。如果'map'是唯一需要的函數,則不需要加載'tidyverse'。 'purrr'就足夠了。 – www