Рассмотрим это:Добавить данные в data.frame с 0 строк
df <- data.frame(a=1:2, b=3:4)
Я могу добавить новый столбец и присвоить значения это следующим образом:
df$c <- 5
Но если я Подмножество это, так его пустой data.frame и попытаться присвоить что-либо к нему, он возвращает ошибку:
df2 <- subset(df, a==3)
df2$d <- 10
Error in $<-.data.frame(tmp, "d", value = 10) : replacement has 1 row, data has 0
Это остановит циклы, поэтому мой вопрос в том, есть ли другие способы назначения значений столбцу в фреймворке данных, который не возвращает ошибок, когда фрейм данных пуст?
Вы можете создать функцию для проверки nrow набора данных перед выполнением задания то есть 'f1 <- function (dat, cname) {dat2 <- dat [dat [[cname]] == 3,]; if (nrow (df2)> 0) {dat2 $ d <- 10; dat2} else dat2} ' – akrun
Это работает, но его немного писать (у меня длинный скрипт). Нет более разумного способа присвоить значения столбцу? –
Если вы используете пакет 'dplyr', вы можете добавить столбец с' df2%>% mutate (d = 10) 'и он не будет разбиваться, если нет строки ... это помогает? Таким образом, это может быть 1-лайнер, например, 'df2 <- df %>% filter (a == 3)%>% mutate (d = 10)' – ztl