使用Lappy对dataframe进行采样,包括新列和重新排序列
最终结果应该是如下所示的数据帧列表:使用Lappy对dataframe进行采样,包括新列和重新排序列,r,dplyr,lapply,R,Dplyr,Lapply,最终结果应该是如下所示的数据帧列表: time=seq(samples_size[i],1) 并且使用dplyrPackage???是,并且不需要dplyr: list_of_df <- lapply(samples_size,function(i)df %>% slice(1:i)) 例如,第一个元素是 lapply(samples_size, function(i) cbind(time = i:1, df[1:i, ])) 正如我在评论中所说,lappy逐个获取sampl
time=seq(samples_size[i],1)
并且使用
dplyr
Package???是,并且不需要dplyr
:
list_of_df <- lapply(samples_size,function(i)df %>% slice(1:i))
例如,第一个元素是
lapply(samples_size, function(i) cbind(time = i:1, df[1:i, ]))
正如我在评论中所说,
lappy
逐个获取sample\u size
的元素,在这种情况下,它们被称为I
,手动定义的匿名函数构造某种结果。然后所有结果返回一个列表(与sapply相反,sapply试图将结果合并到一个向量)。所以这个time
列就是i:1
,这是一个写seq(i,1)
的短方法,cbind
代表一个列,这就是你要找的,通过把time=i:1
放在每个中间结果的第一列。最后,df[1:i,]
给出了df
的第一行i
,在本例中,它是切片的一个简单的base R类似物!我必须深入研究拉普拉函数。谢谢你,朱利叶斯Vainora@Laura,在每个步骤中,lappy
从samples\u size
中提取一个元素,您可以对其执行任何操作。最后,最终结果是这些中间结果的列表。因此,在尝试在每一步中使用dplyr之前,我想说学习base R(cbind
,I:1
,等等)确实是一个好主意,而不仅仅是lappy
。
list_of_df[[1]]<-cbind(list_of_df[[1]],seq(samples_size[1],1))
list_of_df[[1]]<-cbind(list_of_df[[2]],seq(samples_size[2],1))
list_of_df[[1]]<-cbind(list_of_df[[3]],seq(samples_size[3],1))
list_of_df[[1]]<-cbind(list_of_df[[4]],seq(samples_size[4],1))
list_of_df <- lapply(samples_size,function(i)df %>% slice(1:i))
lapply(samples_size, function(i) cbind(time = i:1, df[1:i, ]))
# [[1]]
# time BBAS3
# 1 9 22.85
# 2 8 22.78
# 3 7 22.80
# 4 6 22.22
# 5 5 22.51
# 6 4 21.11
# 7 3 20.84
# 8 2 20.79
# 9 1 20.67