ループで生成された名前で既存のデータフレームにデータを割り当てようとしています。基本的な例は
A = data.frame(a = c(1,2,3), b=c(3,6,2))
for (i in 1:2){
name = paste("Name",i, sep="")
assign(name, c(6,3,2))
}
ここで、割り当てられた名前を維持したまま、name1とname2をdata.frameAに追加する方法を理解する必要があります。簡単な答えがあると確信しています。今は見ていません。
結局私は
A
#a b name1 name2
#1 3 6 6
#2 6 3 3
#3 2 2 2
しかし、私はこれを自動化された方法で行う必要があります。
たとえば、forループを次のように適合させることができる場合
for (i in 1:2){
name = paste("Name",i, sep="")
assign(name, c(6,3,2)
A= cbind(A, get(paste(name,i,sep=""))) # works but doesn't maintain the column name as name1 or name2 etc
}
ただし、これは列名を維持しません
他の答えは良いですが、あなたが持っているようにループを使用することに設定されている場合、これはうまくいくでしょう:
_A <- data.frame(a = c(1,2,3), b = c(3,6,2))
for (i in 1:2){
A[paste("Name", i, sep="")] <- c(6,3,2)
}
_
これは
_> A
a b Name1 Name2
1 1 3 6 6
2 2 6 3 3
3 3 2 2 2
_
または、paste("Name", i, sep="")
をpaste0("Name", i)
に置き換えることもできます。
多分あなたはこれが欲しいです:
R> A <- data.frame(a=c(1,2,3), b=c(3,6,2))
R> colnames(A) <- paste("Names", 1:ncol(A), sep="")
R> A
Names1 Names2
1 1 3
2 2 6
3 3 2
R>
しかし、タイラーがコメントで言ったように、あなたが何を求めているのかは完全には明確ではありません。
何を達成しようとしているのかまだ完全にはわかりません。
A = data.frame(a = c(1,2,3), b=c(3,6,2))
B <- data.frame(A, c(6, 3, 2), c(6, 3, 2))
names(B)[3:4] <- paste0("name", 1:2)
B
どちらが得られますか:
a b name1 name2
1 1 3 6 6
2 2 6 3 3
3 3 2 2 2