2016-05-30 81 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"])}