5
に基づいて、私はこのようになりテーブルを有する:R:行は、平均算出列名部分一致
er er.1 as as.1 as.2 rt op
a 1 6 90 8 6 4 87
b 1 8 56 7 5 5 9
c 8 7 6 4 5 9 6
d 1 0 8 6 4 3 6
e 9 7 2 4 3 89 7
Iは、部分的に一致する名前の列の間の平均の行を計算する結果を得たいとこのように:
Calculate row means based on (partial) matching column names
:er as rt op
a 3.5 34.66666667 4 87
b 4.5 22.66666667 5 9
c 7.5 5 9 6
d 0.5 6 3 6
e 8 3 89 7
私はこの質問にいくつかの有用なヒントを見つけました
しかし、それは私のために働いていないようです。ここで私が使用するコマンドは以下のとおりです。
test <- read.table("test.txt", header=TRUE, row.names=1)
colnames <- c("er", "er", "as", "as", "as", "rt", "op")
means <-sapply(colnames, function(x) rowMeans(test [, grep(x, names(test))]) )
この最後のコマンドは私に次のエラーを与える:ここで
Error in rowMeans(test[, grep(x, names(test))]) :
'x' must be an array of at least two dimensions
は私のデータフレームのdputです:
structure(list(er = c(1L, 1L, 8L, 1L, 9L), er.1 = c(6L, 8L, 7L,
0L, 7L), as = c(90L, 56L, 6L, 8L, 2L), as.1 = c(8L, 7L, 4L, 6L,
4L), as.2 = c(6L, 5L, 5L, 4L, 3L), rt = c(4L, 5L, 9L, 3L, 89L
), op = c(87L, 9L, 6L, 6L, 7L)), .Names = c("er", "er.1", "as",
"as.1", "as.2", "rt", "op"), class = "data.frame", row.names = c("a",
"b", "c", "d", "e"))
任意のアイデア理由私はこのエラーが発生しており、これをどのように修正することができますか?
ありがとうございました!
はあなたを
split
と感謝を取得することができ、それが動作しているようです!私はこれが何をしているのか理解したいと思います。異なるフォーマットの列名でも動作しますか? as_1、er_22など? – arielle@arielle名前の形式が 'as_1'、' er_22'、 'sub(" _。* "、"(names)(df1)) ' – akrun
なら、 – arielle