1

名前(1つのみ)のベクトルがあり、それを複数のオブジェクトに適用したいのですが、関数名は1つの引数(1つのオブジェクト)しか受け入れないため、名前を付けたいすべてのオブジェクトに対してプロセスを繰り返す必要があります。

names(object_1) <- namesvector
names(object_2) <- namesvector
names(object_3) <- namesvector

たった1つのステップでそれを行うことは可能ですか?

ありがとう!

4

3 に答える 3

1

すべての数値ベクトルをリストに入れてlapplyから、代入でそれらを上書きすることができます。何かのようなもの:

# makes some vectors
obj_1 <- 1:10
obj_2 <- 1:10
obj_3 <- 1:10
name_vector <- LETTERS[1:10]

# now apply the names
lapply(list(obj_1,obj_2,obj_3), function(x) {names(x) <- name_vector; x})
于 2013-03-04T15:13:12.520 に答える
1

楽しみのための別の方法:

lapply(list(object_1, object_2, object_3), structure, .Names = namesvector)

これらの答えはすべて、オブジェクトをリストに非難しています。オブジェクトに自由にアクセスできるようにしたい場合 (つまり、グローバル環境で)、別の解決策を次に示します。


サンプル オブジェクト:

object_1 <- runif(3)
object_2 <- runif(3)
object_3 <- runif(3)

応募したい名前:

namesvector <- letters[1:3]

名前を適用するためのいくつかのハッカー:

# Objects you want to combine.
items_n <- c("object_1", "object_2", "object_3")

# Make into a list with names of objects needed for promoting to global environment.
items <- structure(lapply(items_n, get), .Names = items_n)

# Add names to object elements.
named <- lapply(items, structure, .Names = namesvector)

# Promote to global environment.
list2env(named, .GlobalEnv)

今でも参照できます。

object_1

そしてその内容を取り戻します。items_nたくさんのオブジェクトがある場合は、(結合するオブジェクトのリスト) を動的に作成することもできます(似たような名前を持っていると仮定します)。

items_n <- sapply(1:3, function(x) paste0("object_", x))
于 2013-03-04T15:28:05.507 に答える