首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选定未定义的列(贝叶斯分析)

选定未定义的列(贝叶斯分析)
EN

Stack Overflow用户
提问于 2016-08-02 16:24:25
回答 1查看 180关注 0票数 0

我正在复制一个用于贝叶斯分析的R代码,但我得到了这个错误,我试图解决它,在这里也读到了其他问题,但仍然不起作用。我使用相同的数据集和相同的变量(来自经合组织)。有人能告诉我为什么它不工作吗?我的代码是:

代码语言:javascript
运行
复制
rm(list=ls())
# Name of variables to be extracted
v.resp=c("pv1math") # Response Variable
v.treat=c("IC02Q01","IC02Q02","IC02Q03") # Treatment variable(s)
# Student Confoundings
v.student.conf=c("Age", "Gender", "isced_0", "IMMIG", "HEDRES", "WEALTH", "ESCS","FAMSTRUC","hisced","hisei","HOMEPOS", "TIMEINT")
# School Confoundings
v.school.conf=c("CLSIZE","SCMATEDU","STRATIO","SMRATIO","PublicPrivate")

## LOAD DATA
dat <- read.dta("name.dta")
## Weighted sample with weights in the w vector
w=dat$W_FSTUWT

R中的子集数据

代码语言:javascript
运行
复制
dat=dat[c(v.resp,v.treat,v.student.conf,v.school.conf)]
names(dat)[names(dat)==v.resp]="y"
w=w[complete.cases(dat)]
w=w/sum(w)
nw=function(w) w/sum(w)
dat=dat[complete.cases(dat),]
dim(dat)

当我运行行dat=dat[c(v.resp,v.treat,v.student.conf,v.school.conf)]时,我在[.data.frame(dat,c(v.resp,v.treat,v.student.conf,v.school.conf))中得到错误:未定义的列被选中

我有25000个观察值和900个变量,但我想用21个变量和与它们相关的观察值(肯定少于25000个)来子集我的数据。我在两行之间加了逗号)]但是什么都没有,运行其他行我会丢失所有数据。

我也从"Quick-R网站“运行了这段代码,但还是出现了同样的错误信息

代码语言:javascript
运行
复制
# select variables v1, v2, v3
myvars <- c("v1", "v2", "v3")
newdata <- mydata[myvars] 

我想知道为什么它不起作用。我从一篇论文中复制并粘贴了这些代码,该论文将这些代码用于相同的数据集。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-07-05 18:52:24

消息声明:未定义的列已选定。这就是这里的情况:您只选择了所需的行,但忘记了告诉哪些列。使用for子集设置时,必须指定行和列。因此,您需要一个逗号来分隔行和列的信息。由于您没有对行进行选择,因此不需要在逗号后指定任何内容。但是逗号是必需的。调整后的代码:

代码语言:javascript
运行
复制
dat=dat[c(v.resp,v.treat,v.student.conf,v.school.conf),]

唯一的区别是结束符之前的逗号]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38715320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档