2016-07-30 203 views
2

這是我簡單的R代碼。我只想保持小於1的值。R中的未定義列錯誤

有沒有人有任何好點子?謝謝。

df <- read.csv('~/Downloads/foo.tsv', sep='\t', header=F, stringsAsFactors=FALSE) 
names(df) <- c('foo') 
df$foo <- as.numeric(df$foo) 

goodValue <- df[df$foo <= 1] 

最後一行有以下錯誤:

Error in [.data.frame (df, df$foo <= 1) : undefined columns selected

+1

可不可以給我們一個lo你的數據還有你的期望輸出嗎? – rosscova

回答

1
goodValue <- df[df$foo <= 1,] # if you want all columns 
goodValue <- df$foo[df$foo <= 1] # if you only want foo (if you had multiple columns) 
+0

感謝Hack-R,投票並想知道爲什麼需要額外的','?我的數據'df'只有一列。 –

+1

@LinMa不客氣。這只是data.frame中用於引用列的語法。如果你只有1列,你並不需要使用data.frame類,所以當他們編寫該類的語法時,他們並沒有在評估索引引用之前檢查它的列數。 –

+1

感謝Hack-R正確理解我的週末。將您的答覆標記爲答案。 –

1

我們可以使用data.table

library(data.table) 
setDT(df)[foo <= 1] 

或用dplyr

library(dplyr) 
df %>% 
    filter(foo <= 1)