这只是一个例子,这是我的假设数据库:
date <- as.Date(c('2015-07-01','2015-07-05', '2015-07-10', '2015-07-01', '2015-07-05', '2015-07-10'))
id <- c(1,1,1,2,2,2)
a <- c('a','z','e','r','t','y')
b <- c('y','t','r','e','z','a')
price <- c(1,2,3,4,5,6)
df <- data.frame(id,date,a,b,price)
我希望通过split
df
数据框id
并将函数fonct()
应用于列表的所有元素,但将每个元素视为数据框。像这样:
library(dplyr)
library(xts)
fonct<-function(data){
drep1<- data[1,]
drep1$a<- drep1$b
drep1$p<- 0
drep2<- data[1,]
drep2$b<- drep2$a
drep2$p<- 0
d<-rbind(data,drep1,drep2)%>% arrange(date)
d<- as.xts(data$p, order.by=data$date)}
df2 <- lapply(df,fonct(x))
df2 <- lapply(split(df, df$id),fonct(x))
第二个例子不起作用,因为来自split
的元素不是数据框。
答案 0 :(得分:4)
请勿在{{1}}来电中使用fonct(x)
。只需使用功能名称。例如
lapply