我需要输入一个字符串向量。每个元素都是一个变量名,用于以后的循环。输入所有的引号和逗号是一种痛苦 - 有没有办法像这样输入它(这是我可以在Stata中做的事情):
balance.vars <- c(a3 a4 a5_1 a5_2 a5_3 a6_1 a6_2 a6_3 a6_4
a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3
a10_1 a10_2 a10_3)
etc.
答案 0 :(得分:3)
您可以将scan
与text
:
balance.vars <- scan(text='a3 a4 a5_1 a5_2 a5_3 a6_1 a6_2 a6_3 a6_4
a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3
a10_1 a10_2 a10_3',what='char')
但我会避免使用像这样的许多分离变量。什么不使用矢量或列表?也许如果您更好地解释您的工作流程以及您想做什么,我们可以提出更多R风格的解决方案。
您还可以使用paste
创建此类列表,例如:
paste(paste0('a',rep(3:10,each=3)),rep(0:3,8),sep='_')
在OP澄清之后编辑,似乎他想要过滤data.frames变量。
varnames <- colnames(d)[grepl('^a[0-9]+(_[1-3])?',colnames(d))]
formulas <- paste(varnames, "group", sep = " ~ ")
res <- lapply(formulas, function(f) t.test(as.formula(f), data = d))
答案 1 :(得分:2)
R不支持此样式的函数调用。但是如果你把所有变量名都放在一个文本文件中(每行一个),就像这样:
a3
a4
a5_1
a6_1
etc.
然后你可以这样做:
balance.vars <- scan('varnames.txt', what='')
而不必输入所有引号和逗号。
答案 2 :(得分:1)
怎么样:
balance.vars <- unlist(strsplit("a3 a4 a5_1 a5_2 a5_3 a6_1 a6_2 a6_3 a6_4 a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3 a10_1 a10_2 a10_3", " "))
或:
balance.vars <- unlist(strsplit("a3 a4 a5_1 a5_2 a5_3
a6_1 a6_2 a6_3 a6_4 a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3
a10_1 a10_2 a10_3", "\\W", perl=TRUE))
如果您想使用换行符来提高可读性。 : - )
答案 3 :(得分:0)
使用qdap包:
library(qdap)
qcv(terms="a3 a4 a5_1 a5_2 a5_3 a6_1 a6_2 a6_3 a6_4
a6_5 a6_6 a8 a8_1 a8_2 a8_3 a9 a9_3
a10_1 a10_2 a10_3")