我有一个非常棘手的问题,我似乎无法解决.
我有一个大型数据集(23277行,151列).每列的值均为0:100(含),表示为世界事件分配的概率.
作为计算每个人得分的一部分,我需要计算数据集中每个值的出现次数.
我首先尝试申请,但我需要忽略NA和子集,所以当我尝试以下内容时:
apply(ans.samp, 1, sum(ans.samp[ans==0]), na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
我收到了错误消息:sum(ans.samp [ans == 0])'不是函数,字符或符号
我用sapply,vapply,tapply和do.call重复这个过程无济于事.
放弃了矢量化解决方案,我写了以下for循环.
RespCount <- function (x) { for (i in (1:nrow(x)))
{ res <- vector(mode="numeric", length=nrow(x))
ans.tmp <- x[i,]
res[i] <- length(ans.tmp[ans.tmp==0])
print(res)
}
return(res)
}
Run Code Online (Sandbox Code Playgroud)
然而,在我使用它之后,它只返回样本中O的总和.
我会感激一些帮助,因为我在一段时间的压力下,我希望将来能够在R中解决这些问题.
包含的样本数据用于再现性:
structure(list(X = 1:6, X100 = c(70L, NA, 80L, 0L, 40L, NA),
X10 = c(30L, NA, NA, NA, NA, NA), X1 = c(50L, NA, NA, NA,
NA, NA), X11 = c(50L, NA, NA, NA, NA, NA), X12 = c(30L, NA, …Run Code Online (Sandbox Code Playgroud)