2010-04-03 50 views
2

我不確定如何在沒有出現錯誤的情況下執行此操作。這是我的問題的一個簡單例子。R數據框由全局變量選擇

說我有這個數據幀DF

a b c d 
1 2 3 4 
2 3 4 5 
3 4 5 6 

然後,我有一個變量

x <- min(c(1,2,3)) 

現在我想你做以下

y <- DF[a == x] 

但是當我嘗試引用到一些像「x」這樣的變量,我得到一個錯誤,因爲R正在我的數據框中尋找一列「x」。我得到「未定義的列選擇」錯誤

我該怎麼做我想在R做什麼?

回答

2

我認爲這是你要找的東西:

> x <- min(DF$a) 
> DF[DF$a == x,] 
    a b c d 
1 1 2 3 4 

一個簡單的方法(避免變量 'x')將是這樣的:

> DF[which.min(DF$a),] 
    a b c d 
1 1 2 3 4 

或本:

> subset(DF, a==min(a)) 
    a b c d 
1 1 2 3 4 
+0

「x」是一個例子,因爲我正在比較其他一些數據。你列出的第一部分是我不知道但需要的語法 – Matt 2010-05-22 19:51:23

4

您可能會從閱讀R介紹中獲益,特別是在矩陣,數據框架和索引編制方面。你的a是data.frame的一列,你的x是一個標量。你在那裏比較不起作用。

也許你的意思

R> DF$a == min(c(1,2,3)) 
[1] TRUE FALSE FALSE 
R> DF[,"a"] == min(c(1,2,3)) 
[1] TRUE FALSE FALSE 
R> 

告訴你,第一排配合而不是其他的了。用which()包裝這個,可以給你指數。