あなたの質問を理解できたら:
parti3 つのデータセットを作成しました
parti1 <- as.data.frame(matrix(5:25, ncol=3, dimnames=list(NULL, c("Col1", "Col2", "Time"))))
parti2 <- as.data.frame(matrix(1:15, ncol=3, dimnames=list(NULL, c("Col1", "Col2", "Time"))))
parti3 <- as.data.frame(matrix(1:15, ncol=3, dimnames=list(NULL, c("Col1", "Col2", "Time"))))
データセットの値を取得するために使用lsされますmget
例えば、
ls(pattern="^parti") #gives you the created object names that starts with `parti` in the working environment.
#[1] "parti1" "parti2" "parti3"
lst1 <- mget(ls(pattern="^parti")) #mget will return a list of values of each `parti` object
Timeデータセットごとに列を 1 に変更する必要がある場合は、いくつかの方法があります。以下のメソッドは、リスト環境内に列を作成しました。元のデータセットを変更するには、assign またはする必要がありますlist2env
Map(function(x, y) {x[,"Time"] <- y; x}, lst1, 1)
または
lapply(lst1, function(x) {x$Time <-1; x}) #I am changing the existing `Time` column to 1 by using the assignment operator `<-`.
新しい列を作成する場合は、次のようにします。
lapply(lst1, function(x) {x$Time1 <-1; x})
アップデート
元のデータセットの列を変更/作成する必要がある場合は、
partin <- paste0("parti", 1)
assign(partin, `[[<-`(get(partin),'Time', value=1))
上記のメソッドはstringiepartinを最初の引数として取り、置換関数 を使用します[[<-。次に、partinuseの値を取得しますget。次の引数は、変更または作成する列です。その列Timeに の値を割り当てます。1
parti1
# Col1 Col2 Time
#1 5 12 1
#2 6 13 1
#3 7 14 1
#4 8 15 1
#5 9 16 1
#6 10 17 1
#7 11 18 1
複数のデータセットの場合、既存の列/新しい列を変更/作成するには、またはでforループを使用できますassignlist2env
partin1 <- paste0("parti", 1:3)
for(i in seq_along(partin1)){
assign(partin1[i], `[[<-`(get(partin1[i]), 'Time1', value=5)) #creating a new column
}
parti2
# Col1 Col2 Time Time1
#1 1 6 11 5
#2 2 7 12 5
#3 3 8 13 5
#4 4 9 14 5
#5 5 10 15 5
これは、次を使用して行うこともできますlist2env
list2env(lapply(mget(partin1),
function(x) {x$Time2 <- 10 ;x}), envir=.GlobalEnv)
ただし、オブジェクトを作成するのではなく、リストで分析を行うことをお勧めします。
Update2
を使用した方法eval(parse
partin <- paste0("parti", 1)
toAssign <- paste0(partin, "[,'Time3']")
str1 <- paste0(toAssign, "<-", 15)
eval(parse(text=str1))
parti1
# Col1 Col2 Time Time3
#1 5 12 19 15
#2 6 13 20 15
#3 7 14 21 15
#4 8 15 22 15
#5 9 16 23 15
#6 10 17 24 15
#7 11 18 25 15
提供されたサンプル データセットの使用
toAssign <- paste0("Oldtbl", "[, 'Time']")
str1 <- paste0(toAssign, "<-", "'10:15'")
eval(parse(text=str1))
Oldtbl
# Name Gender Hobbies Time
#1 name FALSE singing 10:15
データ
Oldtbl <- structure(list(Name = "name", Gender = FALSE, Hobbies = "singing",
Time = "10:15"), row.names = c(NA, -1L), .Names = c("Name",
"Gender", "Hobbies", "Time"), class = "data.frame")