如何避免R在调用cor时由于标准偏差为零而崩溃?

1bqhqjot  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(168)

例如,如果我跑:

cor(rep(1,7), rep(1,7))
Error in cor(rep(1, 7), rep(1, 7)) :
  (converted from warning) the standard deviation is zero
 1: cor(rep(1, 7), rep(1, 7))
 2: .signalSimpleWarning("the standard deviation is zero", quote(cor(rep(1, 7), rep(1, 7))))
 3: withRestarts({
    .Internal(.signalCondition(simpleWarning(msg, call), msg, call))
    .Internal(.dfltWarn(msg, call))
}, muffleWarning = function() NULL)
 4: withOneRestart(expr, restarts[[1]])
 5: doWithOneRestart(return(expr), restart)

字符串
当我尝试在names(some.data.frame)上运行sapply来计算两个 Dataframe 中每个列的相关性时,这是一个问题。两个 Dataframe 中有相同名称的列。大约有80列,其中一列的向量为零,导致调用崩溃,有没有办法避免这种情况,而是输出NA

neskvpey

neskvpey1#

我看起来像你设置R转换所有警告为错误与选项命令。
这将使它倒退:

options(warn=0)

字符串
警告:
设置警告消息的处理。如果warn为负,则忽略所有警告。如果warn为零,(默认值)警告将被存储,直到顶级函数返回。如果发出的警告少于10个,则将打印它们,否则将显示一条消息,说明发出了多少个警告。创建一个名为last.warning的对象,并可以通过函数warnings打印。如果warn为1,警告在出现时打印。如果warn是两个或更大,则所有警告都将转换为错误。

kulphzqa

kulphzqa2#

不可重现:

R> cor(rep(1,7), rep(1,7))
[1] NA
Warning message:
In cor(rep(1, 7), rep(1, 7)) : the standard deviation is zero
R>

字符串
确保你有最新的版本,确保你没有随机的东西浮动在你的会话等。

相关问题