gpt4 book ai didi

r - 如何测试公式是否是片面的?

转载 作者:行者123 更新时间:2023-12-05 00:30:14 25 4
gpt4 key购买 nike

我需要测试一个公式是否是单方面的(例如 ~ a 而不是 a~b )。

现在我正在做这样的事情:

test <- list( ~ a + b, a ~ b + c, b + c ~ a )
isOneSided <- function(form) length(form)==2 && sum(grepl("~",form))==1
> sapply(test,isOneSided)
[1] TRUE FALSE FALSE

有没有更好的办法?我担心有些我不知道的公式可能无法通过此测试。

最佳答案

我会使用 terms函数并提取响应属性:

test <- list( ~ a + b, a ~ b + c, b + c ~ a )
sapply( test , function(x) attr( terms(x) , "response" ) == 0 )
# [1] TRUE FALSE FALSE

编辑

正如@Arun 指出的那样 terms不能用特殊的方式扩展公式对象,如 .在它不知道 data.frame特别指的是。对此的解决方法是包含一个虚拟 data.frameterms函数调用:
## If we want to expand the '.' in b + c ~ .    
test <- list( ~ a + b, a ~ b + c, b + c ~ a , b + c ~ . , . ~ b + c )
sapply( test , function(x) attr( terms(x , data = data.frame(runif(1))) , "response" ) == 0 )
# [1] TRUE FALSE FALSE FALSE FALSE

关于r - 如何测试公式是否是片面的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com