【发布时间】:2019-03-10 23:22:51
【问题描述】:
我是 R Studio 的新手。对于课堂,我提取了美国人口普查 2016 选举数据集,并希望对数据集运行一系列 T 检验。数据集的一些细节。首先,数据被编码 - 1 到 4 - 代表公民身份。我想看看各种因素是否会影响投票的可能性(1 = 是或 2 = 否)。
代码如下:
factor <- c("Age", "Fathers_country_of_birth", "Mothers_country_of_birth","Highest_level_of_School_completed", "Country_of_birth")
citizen <- c("NATIVE, BORN IN THE UNITED STATES", "NATIVE, BORN IN PUERTO RICO OR OTHER U.S. ISLAND AREAS", "NATIVE, BORN ABROAD OF AMERICAN PARENT OR PARENTS", "FOREIGN BORN, U.S. CITIZEN BY NATURALIZATION")
for (f in factor) {
print(f)
for (i in 1:4){
print(paste("Citizenship is", citizen[i] ))
query <- paste("select * from result2 where Citizenship = ",i)
sample <- sqldf(query)
print(
(t.test(f ~ Vote_in_Election, data=sample, var.equal = FALSE) ) )
} }
它会引发“可变长度”错误
> [1] "Age" [1] "Citizenship is NATIVE, BORN IN THE UNITED STATES" Show
> Traceback Error in model.frame.default(formula = f ~ Vote_in_Election,
> data = sample) : variable lengths differ (found for
> 'Vote_in_Election')
如果我取出外循环,我可以正常运行它,当然,我必须将值一个一个地放入“因子”中。
在 Windows 10 上运行 R Studio 版本 1.1.463,R 为 3.5.2。
因为我迭代 i 时会有不同的数据行,所以我尝试设置paired = FALSE,它仍然对我大喊大叫。
我已经查看了 SO,但没有找到解决方案。我错过了什么?
【问题讨论】:
-
一个发布的建议是关于 var.test 但该解决方案也不起作用。
-
注意
sqldf可以写成:sample <- fn$sqldf("select * from result2 where Citizenship = $i")
标签: r nested-loops t-test