2015-04-03 95 views
1

我通常手工輸入數據到R中,但是我有n = 27個元素的數據集。我data = read.table("HW6.txt", header = TRUE)讀取數據的工作環境表示有數據,X=23,19,...Y=27.1,22.1,...R中讀取數據的問題

我可以讓我的最小二乘就好:

results=lm(Y~X, data) and 
lm(formula = Y ~ X, data = data) 

# Coefficients: (Intercept) X 
# 1.800 1.004 

但不管是什麼原因,我做出X或Y做電話進一步的操作,即

sum(X) 
# Error: object 'X' not found, 

mean(X) 
# Error in mean(X) : object 'X' not found 

那麼,有什麼我必須做的才能讓它正常工作?

+0

嘗試用'(data,mean(X))'。 – 2015-04-03 03:13:15

+0

謝謝,這似乎有幫助。 – Jabernet 2015-04-03 03:19:55

+1

當執行'read.table'時,'X'和'Y'不應該被定義。 「工作環境顯示數據」是什麼意思? get(「X」,envir = .GlobalEnv)'return something? – RockScience 2015-04-03 03:36:34

回答

3

當你輸入數據「手動」爲R訪問,當你打開R.

你創建的 .GlobalEnv變量,即你遇到工作區

當您使用read.table等將數據加載到R中時,您正在創建存儲這些變量的data.frame。正如@Amrita的答案顯示的那樣,您可以使用[$提取來提取該數據幀中的變量。

因此,對於你的選擇(即,將創造行爲最相似的以前的工作流程選項)如下:

d <- read.table("HW6.txt") 
X <- d$X 
Y <- d$Y 
rm(d) 

然後,你可以參考變量XY無需去做我之前描述的任何事情。

但是!這可能是更好的糾正你的工作流程,並開始使用從數據框提取$,而不是回顧以前的工作方便。

(注1:在互動環節,您還可以使用with(data, ...)執行使用從data.frame對象表達式,而不使用$[提取它一般不提倡在腳本/包來使用這個在/ etc。) (注意2:要重新創建您習慣的行爲,您可以使用attach(data),它會將data.frame添加到R的搜索路徑中,但不鼓勵這樣做,因爲它可能會產生意想不到的後果,其中,如果您在.GlobalEnv中修改了X,則它不會在原始data.frame中對其進行修改,因此如果您嘗試調用任一對象,則會在稍後創建混淆。)

+3

不,不要使用'with'或'attach',除非你絕對必須。有時候最好的辦法是改變以前的工作流程並學習新的範例。在這種情況下,就像學習你在「數據框架」中閱讀一樣簡單,你應該瞭解這些。 – Spacedman 2015-04-03 11:08:42

+0

@Spacedman請參閱編輯。 – Thomas 2015-04-03 17:55:32

7

各個元素可以如下

data = read.table("HW6.txt", header = TRUE) 
data$X 
sum(data$X)