2016-05-30 66 views
1

我有A R數據幀爲:訪問行從A R數據幀

Serial_N  voltage  current 
    B    10   nan 
    B    10   nan 
    B    14   nan 
    C    12   nan 
    D    40   nan 
    .    .    . 
    AB    12   nan 

我想通過從電壓元件迴路,其中序列號爲B.我嘗試這樣做:

for (i in 1:length) 
{ 
    df[Serial_N==B,]$voltage[i] 
} 

但它不起作用。任何建議沒有使用臨時變量?

回答

4

我不知道爲什麼你需要一個循環。你想用電壓做什麼?

可以使用基本的子集與[

v <- df[df$Serial_N=="B", ]$voltage 

提取所有電壓,其中Serial_N == B然後做你想做的與電壓V


如果你真的是一個循環結束後,您的結構將會像

for(i in 1:nrow(df)){ 
    df[i, ]$Serial_N == "B" 
    # .. do other stuff.. 
} 

您的循環變量i用於一次選擇一行。然後,您將該行的Serial_N值與"B"

然後您需要決定您想要對每行執行的操作。

+0

任何使用'df [df $ Serial_N ==「B」,] $ voltage'而不是'df $ voltage [df $ Serial_N ==「B」]'甚至是'df [,「電壓「] [df $ Serial_N ==」B「]'?第一種情況是將整個'df'分成若干行,然後將結果中的單個變量進行子集化。它大部分時間可能影響最小,但可能會導致我認爲複製大量數據。 – thelatemail

+0

@thelatemail - 這是從習慣而不是實際考慮它 - 我知道這是不是你第一次指出這一點給我;-) – SymbolixAU

+0

哎呦......爲我破碎的記錄道歉!隨着時間的推移,我忘記了我的評論。正如我所說,這遠非一個大問題。祝你有個好的一天。 :-) – thelatemail

3

您可以選擇從行的所有電壓,其中編號爲B,然後遍歷它們:

for(voltage in df$voltage[df$Serial_N=="B"]){print(voltage)} 

或者您也可以通過其序列號B行的指標迭代,然後用食指和電壓場

for(i in which(df$Serial_N=="B")){print(CC[i,"voltage"])}