簡體   English   中英

在嵌套循環中運行R t.test

[英]Running R t.test in nested loops

我是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')

如果取出外部循環,則可以正常運行,當然,我必須將“ factor”中的值一個接一個地放入。

運行R Studio版本1.1.463,Windows 10上的R是3.5.2。

因為當我遍歷i時會有不同的數據行,所以我嘗試將paired = FALSE設置為它仍然對我大吼大叫。

我已經看過了,但是還沒有找到解決方案。 我想念什么?

要動態生成公式,您需要在as.formula公式的字符串版本:

t.test(as.formula(paste(f, "~ Vote_in_Election")), data=sample, var.equal = FALSE) 

或使用reformulate

t.test(reformulate("Vote_in_Election", response=f), data=sample, var.equal = FALSE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM