我有一个非常大的数据集,我正在尝试获取值的总和。变量是二进制的0和1。
不知何故,当我运行for循环时
for (i in 7:39){
agegroup1[53640, i]<-sum(agegroup1[, i])
}
循环处理但除了第一列之外的所有内容都只包含NA。我尝试调用这些值并看到0和1,以及检查类(它返回“整数”)。但是当它全部添加时,R不起作用。
有什么建议吗?
答案 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)