1

行名が単語であるデータフレームがあり、次のようなものを使用して、そのデータドラムの行の最初の列を呼び出すことができます

>df['rowB',1]

ペーストを使用して変数と文字列を結合し、ペーストを使用して次のようなことを行うことができることを知っています

>paste("the value is ", df['rowB',1], "."]

これにより、変数の値を含む文字列の出力が得られます。rowname が「rowB」に等しい変数である場合はどうなりますか? 上記の貼り付けに最初の貼り付けを実行しようとしましたが、最初の貼り付けの結果は値に評価されず、むしろ次のような単なる文字列です

>rowname<-'rowB'
>type<-paste("relatype[\'", rowname, "\',1]", sep="")
'df['rowB',1]'

簡単に言うと、「rowname」という値を関数のパラメーターとして入力し、rowname の値に対して評価したいので、その値を同じ関数内の文字列に入れることができます。

私はまた、まったく異なる解決策を受け入れています。あらゆる提案を歓迎します。

ありがとう

4

3 に答える 3

1

問題が何であるかはわかりませんが、説明から完全には明らかではありませんが、rowname が変数の場合、とにかくその値に評価されるため、特別なものは必要ありません。させて

mat <- matrix(1:10, nrow = 5)
rownames(mat) <- letters[1:5]
mat
##   [,1] [,2]
##a    1    6
##b    2    7
##c    3    8
##d    4    9
##e    5   10

そしてrowname <- "b"、そして

rowname
##[1] "b"

それで

mat[rowname, 1]
##b 
##2 

と同じmat["b", 1]です。を使用した場合にのみ失敗しますmat['rowname', 1]。これを関数に入れたい場合は、次のようにすることができます。

getElement <- function(mat, row.name, column.index) {

    mat[row.name, column.index]

}


getElement(mat, "b", 1)
##b 
##2 

pasteSenstence <- function(mat, row.name, col.index) {

    paste("The element of row", row.name, "and column", col.index, "is", 
            getElement(mat, row.name, col.index))

}
pasteSentence(mat, "b", 1)
##[1] "The element of row b and column 1 is 2"

これも動作しますrowname <- "b"

 pasteSentence(mat, rowname, 1)
   ##[1] "The element of row b and column 1 is 2"
于 2013-03-16T00:15:46.543 に答える
1

これはうまくいくはずです:

paste("the value is ", get(df['rowname',1]), "."]

慣れていない場合、r の 'get' は python の 'eval' に似ています。

x=c('a', 'c', 'b')
a=2
x[1]
'a'
get(x[1])
2
于 2013-03-15T23:49:53.533 に答える
1

質問がわかりません。あなたの機能は以下とどのように違いますか?

foo = function(rowname = "Species", d = t(iris)){

  paste("I'm selecting", d[rowname, 1])

}

foo()
# [1] "I'm selecting setosa"
于 2013-03-16T00:14:01.693 に答える