Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何同时随机化所有子列表的顺序_R_List - Fatal编程技术网

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])