У меня есть пустой ряд с 19 столбцами. Я хотел бы добавить к этой строке наборы из двух значений - PullRequest
0 голосов
/ 27 марта 2020

Моя пустая строка содержит 19 столбцов. Начиная со столбца 2, я хотел бы непрерывно добавлять значения 1 и 2 до последнего столбца (19).

Например, столбец 2 равен 1, столбец 3 равен 2, столбец 4 равен 1, столбец 5 равен 2 и т. Д. До конца.

Я использую R.

Когда я делаю dput (mydata) для справки

, я получаю

structure(list(column1 = structure(1L, .Label = "", class = "factor"), 
column2 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column4 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column6 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column8 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column10 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column12 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column14 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column16 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor"), column18 = structure(1L, .Label = "", class = "factor"), 
structure(1L, .Label = "", class = "factor")), class = "data.frame", row.names = c(NA, 
-1L))

, я получаю эту структуру.

Ответы [ 3 ]

2 голосов
/ 27 марта 2020

Сначала необходимо преобразовать все столбцы в тип символа, поскольку трудно заменить частичные элементы факторного объекта.

df[] <- lapply(df, as.character)
df[1, -1] <- 1:2
df

#   column1 column2 column3 column4 column5 column6 column7 column8 column9 column10 column11 column12 column13 column14 column15 column16 column17 column18 column19
# 1               1       2       1       2       1       2       1       2        1        2        1        2        1        2        1        2        1        2

Обратите внимание, что столбцы приведенного выше результата являются типами символов. Если вы хотите, чтобы они вернулись к факторам, вам нужно выполнить следующий код:

df[] <- lapply(df, as.factor)
0 голосов
/ 27 марта 2020

Вы можете сделать что-то вроде этого:

df[1,] <- c(df[1,1], rep(1:2, ceiling(ncol(df)/2))[seq_len((ncol(df)-1))])

или (так как вы в любом случае подмножество):

df[1,] <- c(df[1,1], rep(1:2, ncol(df))[seq_len((ncol(df)-1))])
0 голосов
/ 27 марта 2020

Мы можем использовать rep.

dataframe <- data.frame(matrix(NA,nrow=3,ncol=19))
dataframe[1,] <- rep(c(0,1),times=ceiling(ncol(dataframe)/2))[1:ncol(dataframe)]
  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19
1  0  1  0  1  0  1  0  1  0   1   0   1   0   1   0   1   0   1   0
2 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
3 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...