【发布时间】:2014-06-11 14:51:36
【问题描述】:
我正在学习 R 的基础知识,并想了解该语言在特定情况下所做的基本假设。
核心问题: 1. 为什么下面的方法2会返回错误? 2. 为什么下面的方法 3 按字母顺序排列变量?
在具有以下变量的数据框“数据”中
Zeta Alpha Gamma Delta Sum Mean Corr
我正在尝试对变量“Zeta”、“Delta”、“Sum”、“Mean”和“Corr”进行子集化。
“方法一”(成功):
> newdata <- data[c(1, 4:7)]
“方法 2”(错误):
> myvars <- paste(data[c(1, 4:7)], sep="")
> newdata <- data[myvars]
Error in `[.data.frame`(data, myvars) : undefined columns selected
我认为这与将值粘贴到字符的事实有关,但我不清楚这将如何影响函数。
“方法 3”(有效,但按字母顺序排列输出):
> myvars <- paste(ls(data[1, 4:7]), sep = "")
> newdata <- data[myvars]
【问题讨论】:
-
@user2926101 这有帮助 - 谢谢。但我重组了 Q 来解释我的实际意思。
-
你有以下向量吗?
data <- c('Zeta', 'Alpha', 'Gamma', 'Delta', 'Sum', 'Mean', 'Corr')如果您有一个数据框并且只是提供变量的名称,请考虑添加示例数据。 -
我不确定您期望方法 2 做什么。只需运行
paste(data[c(1,4:7)], sep="")以查看它返回的内容以及它为什么不起作用。为什么不直接做data[c("Zeta", "Delta", "Sum", "Mean", "Corr")]? -
以此为例。我可以制作那个向量,但我打算使用有很多很多变量的集合。我希望 R 阅读它们,而不是输入所有它们。