Я хочу произвольно вставить 1 в столбцы фрейма данных, в которых в данный момент нет 1.Использование различных начальных чисел для каждой из переменных.
Ниже приведен код, который я написал до сих пор:
# create the data frame
df <- data.frame(A = c(0,0,0,0,0,0,0,0,0,0),
B = c(0,0,0,0,0,0,0,0,0,0),
C = c(0,1,0,0,0,1,0,1,0,0),
D = c(0,0,0,0,0,0,0,0,0,0),
E = c(0,1,0,1,0,0,0,0,0,0))
# get index of columns that have 1's in them
one_index <- which(grepl(pattern = 1, df))
# function to randomly put 1's with seperate seeds
funcccs <- function(x){
i = 0
for (i in 1:ncol(x)) {
set.seed(i + 1)
x[sample(nrow(x),3)] <- 1
}}
# Apply the function to the columns that do not have 1
funcccs(df[,-one_index])
Ниже приведено сообщение об ошибке, которое я получаю:
Error in [<-.data.frame (*tmp*, sample(nrow(x), 3), value = 1) :
new columns would leave holes after existing columns
На основе приведенного выше примера функция должна случайным образом вставить 3 значения 1 в переменные ' A ', ' B ' и ' D ', поскольку они3 переменные в настоящее время не имеют 1.
Любая помощь будет оценена.Спасибо