[英]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.