R 如何同时随机化所有子列表的顺序
我希望随机排列子列表的顺序,但保留结构。为了说明这一点,我可以使用数据帧:R 如何同时随机化所有子列表的顺序,r,list,R,List,我希望随机排列子列表的顺序,但保留结构。为了说明这一点,我可以使用数据帧: df1 <- data.frame("X1" = LETTERS[1:5], "X2" = letters[1:5]) df1 df1R <- df1[sample(df1[,1]),] df1R > df1 X1 X2 1 A a 2 B b 3 C c 4 D d 5 E e > > df1R <- df1[sample(df1[,1]),] &g
df1 <- data.frame("X1" = LETTERS[1:5], "X2" = letters[1:5])
df1
df1R <- df1[sample(df1[,1]),]
df1R
> df1
X1 X2
1 A a
2 B b
3 C c
4 D d
5 E e
>
> df1R <- df1[sample(df1[,1]),]
> df1R
X1 X2
2 B b
5 E e
1 A a
3 C c
4 D d
您可以这样做来重新排列所有元素:
neworder <- sample.int(5)
lapply(m1, function(x) x[neworder])
neworder您可以这样对所有元素进行重新排序:
neworder <- sample.int(5)
lapply(m1, function(x) x[neworder])
neworder您可以将列表转换为data.frame,应用随机化,然后再转换回列表。没有?当然,但我希望有一个更优雅的解决方案,而不必先访问数据帧-我使用列表来尝试避免数据帧:DOk。那么我的答案呢?您可以将列表转换为data.frame,应用随机化,然后再转换回列表。没有?当然,但我希望有一个更优雅的解决方案,而不必先访问数据帧-我使用列表来尝试避免数据帧:DOk。那么我的答案呢?只需给出NA的lappy(m1,函数(x)neworder[x])[[1]][1]NA NA NA[[2]][1]NA NA NA
@griffinevo与我合作。同样的解决方案,更简单的提取方法是lappy(m1,'[',neworder)
@griffinevo我取了你帖子中的m1
,它很有效。@griffinevo如果你用另一种方法来做,它就不是neworder[x]
,而是x[neworder]
。不错的@griffinevo。而是使用lappy(m1,'[',neworder)
,正如芮所建议的。只需给出NA的>lappy(m1,函数(x)neworder[x])[[1][1]NA-NA-NA[[2][1]NA-NA-NA-NA
@griffinevo对我有效。同样的解决方案,更简单的提取是lappy(m1,[',,neworder)
@griffinevo我接受了你帖子中的m1
,效果很好。@griffinevo如果你用另一种方式来做,那就不是neworder[x]
,而是x[neworder]
。很好@griffinevo。而是按照Rui的建议使用lappy(m1,[',neworder)
。
neworder <- sample.int(5)
lapply(m1, function(x) x[neworder])