R中读取数据的问题

Problems with read data in R

我通常手动将数据输入到 R 中,但我有这个包含 n=27 个元素的数据集。我用data = read.table("HW6.txt", header = TRUE)读取数据工作环境在那里显示数据,X=23,19,...Y=27.1,22.1,...

我可以得到我的最小二乘法:

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

那么,我还需要做些什么才能让它正常工作吗?

个别元素可以如下访问

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

当您在 R 中输入数据 "by hand" 时,您是在 .GlobalEnv 中创建变量,即您在打开 R 时遇到的工作区。

当您改为使用 read.table 等将数据加载到 R 中时,您正在创建一个 data.frame 来存储这些变量。正如@Amrita 的回答向您展示的那样,您可以使用 [$ 提取从 data.frame 中提取变量。

因此,您的一个选项(即,将创建与您之前的工作流程最相似的行为的选项)如下:

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

然后您可以将变量引用为 XY,而无需执行我之前描述的任何操作。

但是!更正您的工作流程并开始使用 data.frame 中的 $ 提取可能更好,而不是依赖于您之前所做的便利。

(注意 1:在交互式会话中,您还可以使用 with(data, ...) 来使用 data.frame 中的对象执行表达式,而无需使用 $[ 提取。通常不鼓励在 script/package/etc 中使用它。)

(注意 2:要重新创建您习惯的行为,您可以使用 attach(data),这会将 data.frame 添加到 R 的搜索路径中。不过,不鼓励这样做,因为它可能会产生意想不到的后果。其中,如果您在 .GlobalEnv 中修改 X,它不会在原始 data.frame 中修改它,因此如果您尝试调用任一对象,则会在以后造成混淆。)