每排偏斜

时间:2013-12-10 16:02:51

标签: r loops missing-data

我有以下数据:

d1    <- c(-10,2,3,4,5,6, NA, NA, NA);
d2    <- c(1,2,3,4,5,6,7, NA, NA); 
d3    <- c(1,2,3,4,5,6,700, 800, 900);
d     <- rbind(d1, d2, d3); d <- data.matrix(d)

我现在想测量d(或每个参与者)每行的偏度。我知道矩包的函数偏度(x),但是,似乎存在问题。我尝试了以下代码:

for (i in 1:nrow(d)){
skew[i] <- as.numeric(skewness(d[i]))
}

你知道什么是错的吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

使用apply

apply(d, 1, skewness, na.rm =TRUE)

for循环的固定版本:

skew <- vector("numeric", nrow(d))  # first pre allocate to hold the result
for (i in 1:nrow(d)){
  skew[i] <- skewness(d[i, ], na.rm=TRUE) # your matrix indexing was wrong
}
setNames(skew, rownames(d))  # just for names

请注意,您的矩阵索引完全错误,并且当矩阵中存在NA时,您需要将na.rm=TRUE设置为跳过它们,请阅读?skewness。我更喜欢使用apply而不是for循环,请阅读?apply

答案 1 :(得分:0)

您也可以使用:

colSkewness(d)