簡體   English   中英

R將具有大小可變的元素的列表轉換為數據框,並計算不同/唯一的行

[英]R convert list that has elements of varying size to a dataframe and count distinct/unique rows

我如何將下面的列表轉換為data.frame? 在將每個元素按升序排序之后,我想計算該列表中的唯一元素。 我打算將列表轉換為data.frame,對每一行進行排序,然后應用distinct()。

在這種情況下,我希望答案為3,因為當我按升序對元素3和4進行排序時,它們都相同

我更喜歡R的函數。

abcd=list()
abcd[[1]]=c(1,2)
abcd[[3]]=c(1,2,3)
abcd[[4]]=c(3,2,1)
> abcd

> as.data.frame(abcd)
Error in data.frame(c(1, 2), NULL, c(1, 2, 3), check.names = TRUE, stringsAsFactors = TRUE) : 
  arguments imply differing number of rows: 2, 0, 3
> as.matrix(abcd)
     [,1]     
[1,] Numeric,2
[2,] NULL     
[3,] Numeric,3

您可以使用length + unique + sort ,如下所示:

length(unique(lapply(abcd, sort)))
# [1] 3
# Warning message:
# In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'

warning是由於NULL元素引起的。 可以使用preventWarnings來suppressWarnings

suppressWarnings(length(unique(lapply(abcd, sort))))
# [1] 3
> abcd=list()
> abcd[[1]]=c(1,2)
> abcd[[3]]=c(1,2,3)
> unique(data.frame(unlist(abcd)))
  unlist.abcd.
1            1
2            2
5            3
table(unlist(abcd))

1 2 3 
2 2 1 

或者如果您想要一個數據框

data.frame(table(unlist(abcd)))

  Var1 Freq
1    1    2
2    2    2
3    3    1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM