2017-03-25 38 views
0

我是R的初學者,搜索論壇並沒有找到對此問題的答案。我試圖在R中創建一個循環來計算數據框中的兩行之間是否滿足條件。我明白,這不是一個有效的方法來做到這一點,但它是一個班級任務。我的問題是,我的代碼正在創建一個無限循環,而不是給我計數器的輸出,我不清楚如何解決它。我會非常感謝任何建議。代碼如下:使用循環在R中創建計數器

counter=0 
for (i in 1:nrow(dataframe)) 
    {if (dataframe$column1[i]>dataframe$column2[i]==TRUE) 
{ 
counter=counter+1} 
} 
print(counter) 
+0

代碼沒有任何明顯的錯誤,但是如果您可以共享數據框,它也會有所幫助。 –

回答

1

如果你只是想知道你的第1列是多少倍,比第2列高,你不必使用一個循環:

counter <- sum(dataframe$column1>dataframe$column2) 

sum(dataframe$column1>dataframe$column2)給你當條件得到驗證時,長度爲nrow(dataframe)的矢量與TRUEFALSE,並且R用矢量元素逐元素地執行。

然後當你它,TRUE被認爲是1和FALSE作爲0.所以它給你多少次條件驗證兩列之間。

+0

我很欣賞使用sum命令的簡明解決方案,但我需要使用控制流來完成此任務,這就是我爲什麼使用循環的原因。我引用的數據框中的列有數字和空值。我通過在counter = counter + 1下面的行中放置print(counter)語句來修改上面的代碼,但是當我運行循環時,我得不到輸出而不是當前計數器。我不清楚我做錯了什麼,所以將不勝感激任何額外的建議 – learningcompsci

+0

我剛剛得到它的工作。感謝您的幫助。 – learningcompsci