【问题标题】:weird R issue with table()table() 的奇怪 R 问题
【发布时间】:2021-03-14 21:09:53
【问题描述】:

我有一个 503 obs x 637 vars 的列表,我试图强制转换为频率表。我的列表如下所示,其中空白是 NA,但分布在更多的列和行上

1 2 3 4 5
string
sting_2
string_2 string_3

但是,当我运行 table(list) 时,我得到了一个非常奇怪的输出,并且只能将其截屏以显示

这不会发生在我用来生成此列表的数据帧上,而且我似乎无法弄清楚或搜索绕过它的方法。此外,当我尝试在列表中的一列上使用table() 时,如table(list[2]),我得到NULL,即使我期望string 1 string_2 1。非常不确定发生了什么,并且发誓我以前在这两种情况下都可以正常工作。请帮忙!!!!

【问题讨论】:

  • 您有listdata.frame?有时控制台上显示的数据与 stackoverflow 中显示的数据不明确,您可以添加来自 dput(x[1:10,1:10]) 的输出吗?
  • @r2evans 它是一个列表,但是当我将它作为.data.frame 时也会发生同样的事情。你的意思是运行dput(table(list)[1:10,1:10])?返回“不正确的维数”。以您编写的方式运行代码返回“找不到对象 x”
  • table(list(1:5)) 给出一维表; table(list(1:5,2:6,3:7)) 给出一个 3d 计数数组。如果您的 list 长度为 637,那么您正在制作一个 heckuva 大尺寸表。我不知道那会有什么用(我不知道你的上下文),但这似乎不可能在控制台上难以评估。鉴于我的第二个示例,您期望得到什么输出?也许看看dput(lapply(x[1:3],head)) 的输出以及您期望table(.) 产生的输出会有所帮助。
  • 我明白了,但我想让我倍感困惑的是table(list[2])) 返回NA
  • 你知道,这是一个很好的问题。如果你想分享你的一些数据,也许有人可以帮助你。就目前而言,您问题中的样本数据并不代表您的真实向量列表,因此我们能提供的帮助真的很少。

标签: r list


【解决方案1】:

list 上使用table(如您在问题的 cmets 中所述)为列表中的每个向量/元素生成一个维度。例如,

table(list(c(1,1,2)))
# 1 2 
# 2 1 

x <- list(c(1,1,2),c(1,1,2),c(1,1,2))
table(x)
# , , x.3 = 1
#    x.2
# x.1 1 2
#   1 2 0
#   2 0 0
# , , x.3 = 2
#    x.2
# x.1 1 2
#   1 0 0
#   2 0 1

第一个 (1d) 列表产生一个 1d 表;第二个 (3d) 列表生成一个 3d 表格数组。所以你的数据 637 vars(我推断列表中的每个元素都是一个 var),你会得到一个 637-dim 的回报。

如果你想要一个目录,那么你需要取消它。

table(unlist(x))
# 1 2 
# 6 3 

至于为什么你得到NULL,你似乎在那个元素中拥有所有NA。例如,

table(c(x, list(c(NA,NA,NA))))
# < table of extent 2 x 2 x 2 x 0 >

(我们之前在这里看到了一个 3-d 表格)。您可以尝试使用useNA="always"useNA="ifany" 解决此问题。

table(c(x, list(c(NA,NA,NA))), useNA="always")
# , , .3 = 1, .4 = NA
#       .2
# .1     1 2 <NA>
#   1    2 0    0
#   2    0 0    0
#   <NA> 0 0    0
# , , .3 = 2, .4 = NA
#       .2
# .1     1 2 <NA>
#   1    0 0    0
#   2    0 1    0
#   <NA> 0 0    0
# , , .3 = NA, .4 = NA
#       .2
# .1     1 2 <NA>
#   1    0 0    0
#   2    0 0    0
#   <NA> 0 0    0

这会让我们更接近初始 table(x) 的“正常”输出,或者

table(unlist(c(x, list(c(NA,NA,NA)))), useNA="always")
#    1    2 <NA> 
#    6    3    3 

在简化视图中。

【讨论】:

  • 在 cmets 中拯救了这一天,并作为这个回应!谢谢!!!!!!
猜你喜欢
  • 1970-01-01
  • 2015-10-19
  • 2015-02-27
  • 2018-06-26
  • 2011-08-13
  • 2011-08-17
  • 2011-02-02
  • 2021-10-10
  • 2014-04-21
相关资源
最近更新 更多