3

基本上我想实现这一点:

vars <- c(x1, x20, x37, etc)
summary(data[vars])

但是,我的变量列表很长,并且它们之间没有逗号

编辑:Data有 500 个变量,vars是我要选择的列表。变量名称不遵循任何模式。该列表的格式为x1 x20 x37 etc,即用空格分隔。此列表来自 SAS 语法文件,不是 R 工作区的一部分。

我研究了使用分隔符连接变量的函数,例如cat(). 然而,这从一开始就需要一个对象。另一种方法是在编辑器中使用查找/替换(逗号空格),但我认为这是一个肮脏的黑客。

显然,我在定义变量列表时遗漏了一些东西;必须有一个简单的解决方案。

4

3 回答 3

7

用这个:

data <- data.frame(x1 = rnorm(10), x2 = rnorm(10))
vars <- "x1 x2"
data[unlist(strsplit(vars, ' '))]
于 2012-05-16T15:26:41.373 回答
2

看起来它们已经是您工作区中变量的名称?

x <- ls()[grep('^x\\d', ls())]

如果您没有其他任何以 x 和您想要包含的数字开头的东西,那可能会让您到达那里。

如果它们是您要粘贴的文本字符串或其他东西,那么也许

x <- scan()

(总的来说,你的问题很模糊)

于 2012-05-16T15:54:40.770 回答
1

假设您可以将文件放入文本文件(很难说不知道数据来自哪里):将变量保存为纯文本文件。使用扫描将它们读入数据文件:

df <- read.table("foo.txt", sep=" ")

然后,您可以使用names(df);命名数据框中的列。或者,如果您可以获得包含列名的文本文件,您可以使用

df <- read.table("foo.txt", header=TRUE, sep=" ") 
于 2012-05-16T15:28:27.147 回答