问题总结列

时间:2013-05-31 16:43:03

标签: r

我有一个非常大的数据集,我正在尝试获取值的总和。变量是二进制的0和1。

不知何故,当我运行for循环时

for (i in 7:39){
agegroup1[53640, i]<-sum(agegroup1[, i])
}

循环处理但除了第一列之外的所有内容都只包含NA。我尝试调用这些值并看到0和1,以及检查类(它返回“整数”)。但是当它全部添加时,R不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

cs <- colSums(agegroup1[, 7:39])

将为您提供列总和的向量而不进行循环(在R级别)。

如果NA中有任何缺失值(agegroup1[, 7:39] s),那么您可能希望将na.rm = TRUE添加到colSums()来电(甚至是sum()呼叫)。

你没有说agegroup1是什么或它有多少行等,但是为了最终确定你的循环在做什么,你需要

agegroup1[53640, 7:39] <- cs

之前开始添加列总和之前的内容是什么? agegroup1[53640, ]?如果是这样可以解释一些行为。

我们确实需要更多细节......

答案 1 :(得分:1)

@Gavin Simpson提供了一个可行的解决方案,但您也可以使用apply。此功能允许您将函数应用于行或列边距。

x <- cbind(x1=1, x2=c(1:8), y=runif(8))

# If you wanted to sum the rows of columns 2 and 3
apply(x[,2:3], 1, sum, na.rm=TRUE)

# If you want to sum the columns of columns 2 and 3
apply(x[,2:3], 2, sum, na.rm=TRUE)