Я хотел бы иметь возможность rbind
фреймов данных, у которых есть столбцы, которые data.frame
сами (не списки фреймов данных).
df <- data.frame(a = 1)
df$b <- data.frame(c = 2)
str(df)
# 'data.frame': 1 obs. of 2 variables:
# $ a: num 1
# $ b:'data.frame': 1 obs. of 1 variable:
# ..$ c: num 2
df2 <- data.frame(a = 3)
df2$b <- data.frame(c = 4)
rbind(df, df2)
# Error in `.rowNamesDF<-`(x, value = value) :
# duplicate 'row.names' are not allowed
# In addition: Warning message:
# non-unique value when setting 'row.names': ‘1’
Мне известно о dplyr::bind_rows(df, df)
, но Я бы специально потребовал решение base R .
(я быстро взглянул на то, как это делает bind_rows
, но, насколько я могу судить, оно относится к C code в vctrs::vec_rbind
, что для меня непроницаемо.)
expected_output <- data.frame(a = c(1, 3))
expected_output$b <- data.frame(c = c(2, 4))
str(expected_output)
# 'data.frame': 2 obs. of 2 variables:
# $ a: num 1 3
# $ b:'data.frame': 2 obs. of 1 variable:
# ..$ c: num 2 4
(Контекст: такие кадры данных поступают из вызовов API, проанализированных с jsonlite
с упрощением. Хотя Я мог бы избежать этого, я ценю удобство, и мне любопытно об этой проблеме, независимо от того).