gpt4 book ai didi

r - 在 R 中创建涉及任意数量变量的公式

转载 作者:行者123 更新时间:2023-12-04 12:31:49 25 4
gpt4 key购买 nike

我正在使用 poLCA 库。要使用库的主要命令,必须创建如下公式:

f <- cbind(V1,V2,V3)~1

在此之后调用命令:

poLCA(f,data0,...)

V1、V2、V3 是数据集data0 中的变量名。我正在运行模拟,我需要多次更改公式。有时它有 3 个变量,有时有 4 个,有时更多。

如果我尝试这样的事情:

f <- cbind(get(names(data0)[1]),get(names(data0)[2]),get(names(data0)[3]))~1

它工作正常。但是我必须提前知道我将使用多少个变量。我想定义一个任意向量

vars0 <- c(1,5,17,21)

然后创建公式如下

f<- cbind(get(names(data0)[var0]))

不幸的是我得到了一个错误。我怀疑答案可能涉及某种形式的申请,但我仍然不太了解此功能的工作原理。在此先感谢您的帮助。

最佳答案

使用 ?poLCA 中示例中的数据,这个(可能是骇人听闻的)惯用语似乎有效:

library(poLCA)
vec <- c(1,3,4)
M4 <- poLCA(do.call(cbind,values[,vec])~1,values,nclass = 1)

编辑

正如 Hadley 在评论中指出的那样,我们正在使它变得比我们需要的更复杂。在这种情况下,values 是数据框,而不是矩阵,因此:

M1 <- poLCA(values[,c(1,2,4)]~1,values,nclass = 1)

生成错误,但是:

M1 <- poLCA(as.matrix(values[,c(1,2,4)])~1,values,nclass = 1)

工作正常。因此,只要将列包装在 as.matrix 中,就可以对列进行子集化。

关于r - 在 R 中创建涉及任意数量变量的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7459569/

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