9

の列名が、たとえば:などの形式である場合、引用data.table符で囲まれていない列名として解釈されるように、これをのように参照するにはどうすればよいでしょうか。number + character4PCS5Yjx[i,j]

これで私の本来の問題は解決すると思います。'data.table'に、の形式の列をいくつか追加したかったのnumber + characterです。

M <- data.table('4PCS'=1:4,'5Y'=4:1,X5Y=2:5)
> M[,4PCS+5Y]
Error: unexpected symbol in "M[,4PCS"

新しい列はとの合計である必要が4PSCあり5Yます。

data.table引用されていない形式でそれらを参照する方法はありますか?これらの列がdata.table引用符で囲まれた「ロジック」で参照されている場合data.frame

> M[,'5Y',with=FALSE]
     5Y
[1,]  4
[2,]  3
[3,]  2
[4,]  1

その場合、そのような参照の機能には制限があります。で機能しないため、追加は機能しませんdata.frame

> M[,'4PCS'+'5Y',with=FALSE]  
Error in "4PCS" + "5Y" : non-numeric argument to binary operator

このdata.table機能により、列を操作できます。新しいロジックで解決策を見つけたいdata.tableので、その機能を使用して、列名を参照して列を変換できます。

問題は、data.tableロジックが列名であることを理解できるように、数値で始まる列名を引用
する 方法です。

4

2 に答える 2

16

これがあなたが探しているものだと思いますが、確かではありません。とdata.table異なりdata.frameます。クイックイントロダクションFAQ(および必要に応じてリファレンスマニュアル)をご覧ください。

require(data.table)
dt <- data.table("4PCS" = 1:3, y=3:1)
#    4PCS y
# 1:    1 3
# 2:    2 2
# 3:    3 1

# access column 4PCS
dt[, "4PCS"]

# returns a data.table
#    4PCS
# 1:    1
# 2:    2
# 3:    3

# to access multiple columns by name
dt[, c("4PCS", "y")]

または、列にアクセスする必要があり、結果がベクトルではなく、である場合は、次の表記data.tableを使用してアクセスできます。$

dt$`4PCS` # notice the ` because the variable begins with a number
# [1] 1 2 3

# alternatively, as mnel mentioned under comments:
dt[, `4PCS`] 
# [1] 1 2 3

または、次のように使用してアクセスできる列番号がわかっている場合[[.]]

dt[[1]] # 4PCS is the first column here
# [1] 1 2 3

編集:

@joranに感謝します。私はあなたがこれを探していると思います:

dt[, `4PCS` + y]
# [1] 4 4 4

基本的に問題は4CPS、Rの有効な変数名ではないことです(試してみ4CPS <- 1てください。同じ「予期しないシンボル」エラーが発生します)。したがって、それを参照するには、バッククォートを使用する必要があります(比較`4CPS` <- 1

于 2013-03-26T12:35:00.910 に答える
0

呼び出している変数名の直前に「X」を付けて、数値と文字列を異なるものとして評価するのではなく、Rに名前として認識させることもできます(したがって、構文が正しくありません)。

したがって、たとえば4PCSを呼び出すときは、X4PCSを使用します

のように

mydata <-X4PCS

于 2018-10-18T14:14:34.643 に答える