[英]Remove labels from within data.frame and tibble
我已經使用命名向量來制作數據框。 當我將此 data.frame 轉換為 tibble 時,我最終得到命名列表而不是常規列。 我怎樣才能刪除這些名稱?
示例數據
ww = structure(list(is_character = list(`labA` = 1, `labB` = 1, `labC` = 1),
is_numeric = list(`labA` = 0, `labB` = 0, `labC` = 0),
is_logical = list(`labA` = 0, `labB` = 0, `labC` = 0),
column_name = c("labA", "labB", "labC")),
row.names = c(NA, -3L), class = "data.frame")
當作為 dataframe 查看時,一切看起來都很好。as.data.frame as.data.frame(ww)
返回以下內容:
is_character is_numeric is_logical column_name
1 1 0 0 labA
2 1 0 0 labB
3 1 0 0 labC
但是當轉換為 tibble 時,我最終得到的是命名列表而不是普通列。 as_tibble(ww)
返回以下內容:
# A tibble: 3 x 4
is_character is_numeric is_logical column_name
<named list> <named list> <named list> <chr>
1 <dbl [1]> <dbl [1]> <dbl [1]> labA
2 <dbl [1]> <dbl [1]> <dbl [1]> labB
3 <dbl [1]> <dbl [1]> <dbl [1]> labC
我不想在我的 tibble 中使用命名列表,我想使用純數字列。 我怎樣才能做到這一點?
我試圖從未命名的列表中制作原始的 data.frame,但這會帶來其他問題。 因此,最好刪除名稱。 我用unname
做了幾次嘗試,但都沒有成功。
有幾種簡單的方法:
as_tibble(ww) %>% mutate(across(everything(), unlist))
或者
as_tibble(ww) %>% unnest(everything())
兩種方法都會產生:
is_character is_numeric is_logical column_name
<dbl> <dbl> <dbl> <chr>
1 1 0 0 labA
2 1 0 0 labB
3 1 0 0 labC
請注意,您的is_character
列不是字符,您的is_logical
列不符合邏輯。 但是,如果您的輸入數據是這樣的:
ww = structure(list(is_character = list(`labA` = "a", `labB` = "b", `labC` = "c"),
is_numeric = list(`labA` = 0, `labB` = 0, `labC` = 0),
is_logical = list(`labA` = T, `labB` = F, `labC` = T),
column_name = c("labA", "labB", "labC")),
row.names = c(NA, -3L), class = "data.frame")
那么上述方法會產生這樣的結果:
# A tibble: 3 x 4
is_character is_numeric is_logical column_name
<chr> <dbl> <lgl> <chr>
1 a 0 TRUE labA
2 b 0 FALSE labB
3 c 0 TRUE labC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.