ここでの大きな皮肉は、あなたが「これをやりたい」と言ったとき、最初の表現が成功するはずだったということです。
df[,c('v1','v2')]
> str( df[,c('v1','v2')] )
'data.frame': 100 obs. of 2 variables:
$ v1: num -0.3347 0.2113 0.9775 -0.0151 -1.8544 ...
$ v2: num -1.396 -0.95 -1.254 0.822 0.141 ...
その後の試みはすべて失敗します。を使用できることを知らなかったことに後で気付きました select.me <- c('v1','v2') ; df[ , select.me]
。場合によってはより安全なこれらのフォームを使用することもできます。
df[ , names(df) %in% select.me] # logical indexing
df[ , grep(select.me, names(df) ) ] # numeric indexing
df[ , grepl(select.me, names(df) ) ] # logical indexing
これらのいずれも negation( !logical
) またはマイナス ( -numeric
) で使用して補数を取得できますが、否定で文字インデックスを使用することはできません。理解しやすさを 1 レベル下げて、select.me
値を有効な R 式に変更したい場合は、次のようにします。
select.me <- "c('v1','v2')"
df[ , eval(parse(text=select.me)) ]
これをお勧めするわけではありません...「歩くことを学んだ」後に可能であることをお知らせするためです. 元の引用符で囲まれた文字列を使用して情報を引き出すことも可能でした (バロックではありますが) (ただし、これは最初のバージョンが優れている理由を示しているだけだと思います)。
select.me <- "'v1','v2'"
df [ , scan(textConnection(select.me), what="", sep=",") ]
> str( df [ , scan(textConnection(select.me), what="", sep=",") ] )
Read 2 items
'data.frame': 100 obs. of 2 variables:
$ v1: num -0.3347 0.2113 0.9775 -0.0151 -1.8544 ...
$ v2: num -1.396 -0.95 -1.254 0.822 0.141 ...