s <- c("りんご_apple_林檎", "みかん_orange_蜜柑", "バナナ_banana", "メロン_melon")リストに格納された4本のベクトルの要素の個数は,異なります。
s <- strsplit(s, "_")
> s[[1]]やりたいことを,以下にお示しをします。
[1] "りんご" "apple" "林檎"
> s[[2]]
[1] "みかん" "orange" "蜜柑"
> s[[3]]
[1] "バナナ" "banana"
> s[[4]]
[1] "メロン" "melon"
> s[[1]][1]のように,s[[*]][1]のベクトル要素だけを集めて,ベクトルに格納する。
[1] "りんご"
> s[[2]][1]
[1] "みかん"
> s[[3]][1]
[1] "バナナ"
> s[[4]][1]
[1] "メロン"
> x1s[[*]][1]のベクトル要素だけを集めて,ベクトルに格納する。
[1] "りんご" "みかん" "バナナ" "メロン"
> x2
[1] "apple" "orange" "banana" "melon"
> x3
[1] "林檎" "蜜柑" NA NA
No.22901 Re: 【R】リストからデータフレームへの変換(その2) 【青木繁伸】 2020/04/27(Mon) 22:08
以下のようにすれば,もっともらしいとは思いますが,スマートでもなんでもないと思います。
素直にプログラミングする方がよいかと思います。s <- c("りんご_apple_林檎", "みかん_orange_蜜柑", "バナナ_banana", "メロン_melon")実行結果
v <- sapply(s, function(u) {
str <- character(3)
a <- unlist(strsplit(u, "_"))
len <- length(a)
str[1:len] = a
str})
df <- data.frame(t(v))
rownames(df) <- NULL
df[df==""] <- NA
df
df[,1]
df[,2]
df[,3]> df
X1 X2 X3
1 りんご apple 林檎
2 みかん orange 蜜柑
3 バナナ banana
4 メロン melon
> df[,1]
[1] "りんご" "みかん" "バナナ" "メロン"
> df[,2]
[1] "apple" "orange" "banana" "melon"
> df[,3]
[1] "林檎" "蜜柑" NA NA
No.22902 御礼(Re: 【R】リストからデータフレームへの変換(その2)) 【明石】 2020/04/28(Tue) 09:12
青木先生 様;
お忙しいところを失礼いたします,明石と申します。
毎々,ご丁寧なご教示をいただき,誠にありがとうございます。
今回も,ご丁寧で,ありがたいご教示をいただき,とてもうれしいです。
心から,心より,御礼を申し上げます。
ありがとうございました。
以下,補足です。
------------------------------------
s[[*]][1]のベクトル要素だけを集めて,ベクトルに格納する,
という個所を, 例えば,sapply(s, FUN,1) などのように,
s[[*]][2]のベクトル要素だけを集めて,ベクトルに格納する,
という個所を, 例えば,sapply(s, FUN,2) などのように,
もし,上記のように書けたとすると(書けるかどうか,その知識がありません)
FUNは,どのように書けるのか,という強い興味がございました。
投稿の動機が不純だったような気がしており,反省しています。
やはり,プログラミングも,素直さが大切です。
//
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る