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)
然后您可以将变量引用为 X
和 Y
,而无需执行我之前描述的任何操作。
但是!更正您的工作流程并开始使用 data.frame 中的 $
提取可能更好,而不是依赖于您之前所做的便利。
(注意 1:在交互式会话中,您还可以使用 with(data, ...)
来使用 data.frame 中的对象执行表达式,而无需使用 $
或 [
提取。通常不鼓励在 script/package/etc 中使用它。)
(注意 2:要重新创建您习惯的行为,您可以使用 attach(data)
,这会将 data.frame 添加到 R 的搜索路径中。不过,不鼓励这样做,因为它可能会产生意想不到的后果。其中,如果您在 .GlobalEnv 中修改 X
,它不会在原始 data.frame 中修改它,因此如果您尝试调用任一对象,则会在以后造成混淆。)
我通常手动将数据输入到 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)
然后您可以将变量引用为 X
和 Y
,而无需执行我之前描述的任何操作。
但是!更正您的工作流程并开始使用 data.frame 中的 $
提取可能更好,而不是依赖于您之前所做的便利。
(注意 1:在交互式会话中,您还可以使用 with(data, ...)
来使用 data.frame 中的对象执行表达式,而无需使用 $
或 [
提取。通常不鼓励在 script/package/etc 中使用它。)
(注意 2:要重新创建您习惯的行为,您可以使用 attach(data)
,这会将 data.frame 添加到 R 的搜索路径中。不过,不鼓励这样做,因为它可能会产生意想不到的后果。其中,如果您在 .GlobalEnv 中修改 X
,它不会在原始 data.frame 中修改它,因此如果您尝试调用任一对象,则会在以后造成混淆。)