[解決済み] Rで、オブジェクトが関数に送られた後、そのオブジェクトの名前を取得する方法は?
2022-04-25 21:58:32
質問
の逆をさがしています。
get()
.
オブジェクト名が与えられたとき、そのオブジェクトを表す文字列を直接抽出させたい。
を使った簡単な例です。
foo
は、私が探している関数のプレースホルダーです。
z <- data.frame(x=1:10, y=1:10)
test <- function(a){
mean.x <- mean(a$x)
print(foo(a))
return(mean.x)}
test(z)
印刷されるでしょう。
"z"
私の現在の問題で実装が困難な回避策は
test <- function(a="z"){
mean.x <- mean(get(a)$x)
print(a)
return(mean.x)}
test("z")
解決方法は?
古くからあるデパース-サブスティテュートのトリックです。
a<-data.frame(x=1:10,y=1:10)
test<-function(z){
mean.x<-mean(z$x)
nm <-deparse(substitute(z))
print(nm)
return(mean.x)}
test(a)
#[1] "a" ... this is the side-effect of the print() call
# ... you could have done something useful with that character value
#[1] 5.5 ... this is the result of the function call
Edit: 新しいテストオブジェクトで実行してみました。
注:ローカル関数内で、リストアイテムのセットが第一引数から
lapply
(に与えられたリストからオブジェクトが渡された場合も失敗します)。
for
-ループ) 処理されているのが名前付きベクトルであれば、構造体の結果から ".Names"- 属性と処理順を抽出することができるでしょう。
> lapply( list(a=4,b=5), function(x) {nm <- deparse(substitute(x)); strsplit(nm, '\\[')} )
$a # This "a" and the next one in the print output are put in after processing
$a[[1]]
[1] "X" "" "1L]]" # Notice that there was no "a"
$b
$b[[1]]
[1] "X" "" "2L]]"
> lapply( c(a=4,b=5), function(x) {nm <- deparse(substitute(x)); strsplit(nm, '\\[')} )
$a
$a[[1]] # but it's theoretically possible to extract when its an atomic vector
[1] "structure(c(4, 5), .Names = c(\"a\", \"b\"))" ""
[3] "1L]]"
$b
$b[[1]]
[1] "structure(c(4, 5), .Names = c(\"a\", \"b\"))" ""
[3] "2L]]"
関連
-
Rのexpand.grid()コマンド
-
[解決済み] 文字列ベクトルを代入して、列名を持つ空のデータフレームを作成する?重複
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] 関数のソースコードを見るにはどうしたらいいですか?
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
-
[解決済み] Rでオブジェクト(変数)が定義されているかどうかを確認するには?
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み] 2つの単語の最初の文字を大文字にします。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R: エラー: $ 演算子は原子ベクトルに対して無効です。
-
[解決済み] Rの二乗偏差の総和の算出
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] 特定のサイズのプロットウィンドウを作成する
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] require()とlibrary()の違いは何ですか?
-
[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
-
[解決済み】Rスクリプトで警告をグローバルに抑制する方法
-
[解決済み] セッションが作成されません。このバージョンのChromeDriverはChromeバージョンにしか対応していません ChromeDriver ChromeでSeleniumを使用した場合の74エラー
-
[解決済み] 変数(オブジェクト)名をStringに変換する方法【重複あり