我有以下表达式,我通过as.formula粘贴函数表达式(使用paste表示两个表达式)。 A是对象数据框
pastevar <- paste(c("z2 ~ ", paste(A, collapse=" + ")))
X <- model.matrix(as.formula(pastevar)) [,-1]
z2的长度比A的长度(199个元素)短一行(200个元素)。 A传递给第二个表达式,上面的粘贴表达式为
> A
[1] "Dxi2" "Dxu2" "Dxa2" "Dxb2" "Dxc2" "Dxd2"
有没有办法传递像A [-1,]这样的指令,通过在pastevar表达式或模型矩阵中传递来消除A中的第一行,因此X model.matrix的长度匹配。
当我使用下面的表达式时,我得到的维数不正确
pastevar <- paste(c("z2 ~ ", paste(A[-1,], collapse=" + ")))
Error en A[-1, ] : número incorreto de dimensiones
谢谢
答案 0 :(得分:2)
R无法解析否定索引,而是告诉它从第二行开始并转到最后一行:
pastevar <- paste(c("z2 ~ ", paste(A[2:nrow(A),], collapse=" + ")))
编辑: 根据您的编辑添加数据本身,根据A:
的尺寸pastevar <- paste(c("z2 ~ ", paste(A[2:length(A)], collapse=" + ")))
如果你想在最后切断x列:
A[1:(length(A)-x)]