2つのリストがあります.1つは長さの異なる複数のデータフレームを含んでいます。それぞれの長さに対して、配列のリストに対応する配列があり、今はこれらの配列を同じ長さのベクトルにcolnamesとして適用したいと思います。あるリストから別のリスト内のデータフレームと長さで一致するベクトル
for (i in 1:10){
assign(paste0("var",i), c(1:10))
}
df1 <- data.frame(var1,var2)
df2 <- data.frame(var3,var4,var5)
df3 <- data.frame(var6,var7,var8,var9)
df4 <- data.frame(var10)
df5 <- data.frame(var1,var2)
df6 <- data.frame(var3,var4,var5)
df7 <- data.frame(var6,var7,var8,var9)
df8 <- data.frame(var10)
my.list <- list(df1,df2,df3,df4)
names1 <- c("aa","bb")
names2 <- c("cc","dd","ee")
names3 <- c("ff","gg","hh","ii")
names4 <- c("jj")
my.list.names <- list(names1,names2,names3,names4)
for (i in 1:length(my.list)){
if (length(my.list[[i]]) == length(my.list.names))
colnames(my.list[[i]]) <- my.list.names
}
私の解決策が実際には機能しない理由がわかります。私はmy.listの各データフレームを調べるだけでなく、my.list.namesの各ベクトルにも対応し、一致するかどうかを確認する必要があります。
私はこの「ループの中のループ」の周りを頭で覆うことはできません。私はapplyでより洗練されたソリューションを試しました。しかし、私は同じ時点で終わります。また、もう一つのif条件が最後に欠落しているようですが、前のステートメントと同じように私が書いたものをもう一度指定するのは正しいとは思われません。