R中缺少值的列表中的值的频率表

时间:2018-02-23 15:44:24

标签: r list frequency data-manipulation

我在R中有一个大的列表对象,它给出了落在栅格顶部的许多多边形中每个栅格像素的值。对于那些不习惯空间数据的人来说,它只是一个包含几百个元素的列表,每个元素都有许多整数值,范围从0到16。 我需要一个频率表,显示每个列表元素(多边形)中每个值的出现次数。到目前为止,我已经尝试了以下两种方法,其中v.1是列表。

v.1 <- list(c(1,1,2,2,3,4), c(2,2,2,4,5,5,6,9, NA))

 w=lapply(v.1, function(x) apply(x, 2, table))

返回&#34; apply(x,2,table)中的错误:dim(X)必须具有正长度&#34; 和

f <- do.call(rbind, lapply(v.1, FUN = function(x) { return( table(x)) }))

返回&#34;警告消息: 在(function(...,deparse.level = 1)中:   结果列数不是向量长度的倍数(arg 2)。&#34;

我认为,问题在于并非所有值(实际数据集中的0-16)都出现在每个列表元素中。如何解决这个问题以创建正确的频率表?

1 个答案:

答案 0 :(得分:0)

示例数据:

w <- lapply(v, table)

你可以做到

w <- lapply(1:length(v), function(i)  cbind(id=i, data.frame(table(v[[i]])))  )

但要结合使用,我会做

x <- do.call(rbind, w)

其次是

struct HexTri;


struct HexTile
{
    HexTile( Imath::V3f p );    

    Imath::V3f m_vertPos;       
    Imath::V3f m_nrm;
    enum {
        Terrain_WATER,
        Terrain_DESERT,
        Terrain_GRASSLAND,
        Terrain_FOREST,
        Terrain_MOUNTAIN
    };
    int m_terrain;
    std::vector<HexTri*> m_hextri;  
};

struct HexTri
{
    HexTri( size_t a, size_t b, size_t c );

    size_t m_hexA, m_hexB, m_hexC;
    HexTri *m_nbAB, *m_nbBC, *m_nbCA;
    union {
        size_t m_newvert;
        float m_angle;
    } m_tmp;
};