R中读取数据的问题

问题描述:

我通常手工输入数据到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

当你输入数据“手动”为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

各个元素可以如下

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