我在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)都出现在每个列表元素中。如何解决这个问题以创建正确的频率表?
答案 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;
};