随机化数据框列表中的列
Randomizing a column in a list of dataframe
我想要一个数据帧的多个副本,但每次都有一个新的随机变量。我的objective背后是对一个变量的随机化值进行多次迭代分析。
我首先做了一个数据框列表,其中包含我原始数据框的副本:
a <- c(1, 2, 3, 4, 5)
b <- c(45, 34, 50, 100, 64)
test <- data.frame(a, b)
test2 <- lapply(1:2,function(x) test) #List of 2 dataframe, identical to test
我知道变换和采样,以随机化列的值:
test1 <- transform(test, a = sample(a))
我只是找不到如何将它应用于整个数据帧列表。我试过这个:
test3<- lapply(test2,function(i) sample(i[["a"]]))
但是我丢失了其他变量。还有这个:
test3 <- lapply(test2,function(i) {transform(i, i[["a"]]==sample(i[["a"]]))})
但是我的变量不是随机的。
多个问题与我的相似,但没有帮助我解决问题:
Adding columns to each in a list of dataframes
Add a column in a list of data frames
您可以尝试以下方法:
lapply(test2, function(df) {df$a <- sample(df$a); df})
或者,使用 transform
:
lapply(test2, function(df) transform(df, a = sample(a)))
或者只是
lapply(test2, transform, a = sample(a))
您需要将它们放在单独的列表中是有原因的吗?
这将为您提供 10 列不同列中的 a 随机样本,然后您可以循环遍历这些列以进行进一步分析。
a <- c(1, 2, 3, 4, 5)
b <- c(45, 34, 50, 100, 64)
test <- data.frame(a, b)
for(i in 3:12){
test[,i] <- transform(sample(a))
}
`
我想要一个数据帧的多个副本,但每次都有一个新的随机变量。我的objective背后是对一个变量的随机化值进行多次迭代分析。
我首先做了一个数据框列表,其中包含我原始数据框的副本:
a <- c(1, 2, 3, 4, 5)
b <- c(45, 34, 50, 100, 64)
test <- data.frame(a, b)
test2 <- lapply(1:2,function(x) test) #List of 2 dataframe, identical to test
我知道变换和采样,以随机化列的值:
test1 <- transform(test, a = sample(a))
我只是找不到如何将它应用于整个数据帧列表。我试过这个:
test3<- lapply(test2,function(i) sample(i[["a"]]))
但是我丢失了其他变量。还有这个:
test3 <- lapply(test2,function(i) {transform(i, i[["a"]]==sample(i[["a"]]))})
但是我的变量不是随机的。
多个问题与我的相似,但没有帮助我解决问题:
Adding columns to each in a list of dataframes
Add a column in a list of data frames
您可以尝试以下方法:
lapply(test2, function(df) {df$a <- sample(df$a); df})
或者,使用 transform
:
lapply(test2, function(df) transform(df, a = sample(a)))
或者只是
lapply(test2, transform, a = sample(a))
您需要将它们放在单独的列表中是有原因的吗?
这将为您提供 10 列不同列中的 a 随机样本,然后您可以循环遍历这些列以进行进一步分析。
a <- c(1, 2, 3, 4, 5)
b <- c(45, 34, 50, 100, 64)
test <- data.frame(a, b)
for(i in 3:12){
test[,i] <- transform(sample(a))
}
`