Как добавить число в конце каждой строки столбцов неравной длины кадра данных в r - PullRequest
0 голосов
/ 14 октября 2018

Новичок в R и извинения, если я спрашиваю неправильно:

Как добавить число на каждом конце строки неравной длины столбцов?

Пример кода:

x = 1:12
y = 1:10
z=1:8

attributes(df) = list(names = names(df),row.names=1:max(length(x), length(y),length(z)), class='data.frame')
df
#    x    y    z
#1   1    1    1
#2   2    2    2
#3   3    3    3
#4   4    4    4
#5   5    5    5
#6   6    6    6
#7   7    7    7
#8   8    8    8
#9   9    9 <NA>
#10 10   10 <NA>
#11 11 <NA> <NA>
#12 12 <NA> <NA>

1 Ответ

0 голосов
/ 14 октября 2018

Прежде всего, чтобы преобразовать список векторов неравной длины в data.frame, заполнив векторы NA, ваш код неверен, этот лучше.

x <- 1:12 
y <- 1:10 
z <- 1:8 
df <- list(x = x, y = y, z = z) 

n <- max(sapply(df, length))

df <- lapply(df, function(x){
  c(x, rep(NA, n - length(x)))
})
df <- do.call(cbind.data.frame, df)

Следующий код заменит первый NA в каждой строке значением 3.
. Он перебирает строки, используя apply, и изменяет строки хотя бы с одним значением NA.

df[] <- t(apply(df, 1, function(x){
  if(anyNA(x)){
    i <- min(which(is.na(x)))
    x[i] <- 3
  }
  x
}))

df
#    x  y  z
#1   1  1  1
#2   2  2  2
#3   3  3  3
#4   4  4  4
#5   5  5  5
#6   6  6  6
#7   7  7  7
#8   8  8  8
#9   9  9  3
#10 10 10  3
#11 11  3 NA
#12 12  3 NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...