我有2个数据框train
和label
。数据框train
有784行和20K列。数据框label
有1行和20K列。 i
中的每个label
列都对应i
中的train
列。 train
类似于:
---->--- 20K Columns ---->
0 0 0 0 ... 3
1 0 . . ... .
4 0
9 7
. .
. .
. .
1 4
因此,对于我属于{1,20K}的每个i
列,label
数据框中都有相应的标签,如下所示:
---->----20K columns----->
0 -1 3 4 5 8 0 -5 -9 1 2 ....
train
中的第一列对应label
中的第一列,train
中的第二列对应label
中的第二列,依此类推。
现在,我想要对train
数据框进行随机播放。但如果我随机播放train
,则label
的订单将会丢失。有没有一种方法可以在保持train
订单的同时将label
数据框混洗?
答案 0 :(得分:4)
随机排序一个排序向量,然后用它来排序两个对象。
shuffle <- sample(ncol(label))
label <- label[,shuffle]
train <- train[,shuffle]
mtcars的一个例子:
#create the label data frame
label <- data.frame(as.list(names(mtcars)), stringsAsFactors = FALSE)
label
# X.mpg. X.cyl. X.disp. X.hp. X.drat. X.wt. X.qsec. X.vs. X.am. X.gear. X.carb.
# 1 mpg cyl disp hp drat wt qsec vs am gear carb
shuffle <- sample(ncol(label))
mtcars <- mtcars[,shuffle]
label <- label[,shuffle]
label
# X.carb. X.wt. X.hp. X.cyl. X.mpg. X.gear. X.vs. X.am. X.drat. X.disp. X.qsec.
# 1 carb wt hp cyl mpg gear vs am drat disp qsec
head(mtcars)
# carb wt hp cyl mpg gear vs am drat disp qsec
# Mazda RX4 4 2.620 110 6 21.0 4 0 1 3.90 160 16.46
# Mazda RX4 Wag 4 2.875 110 6 21.0 4 0 1 3.90 160 17.02
# Datsun 710 1 2.320 93 4 22.8 4 1 1 3.85 108 18.61
# Hornet 4 Drive 1 3.215 110 6 21.4 3 1 0 3.08 258 19.44
# Hornet Sportabout 2 3.440 175 8 18.7 3 0 0 3.15 360 17.02
# Valiant 1 3.460 105 6 18.1 3 1 0 2.76 225 20.22
更直接的方法是rbind
两个数据框,但我假设你将它们作为单独的对象出于某种原因。