137

データフレームの行からベクトルを作成したいと思います。ただし、行名と列名は必要ありません。私はいくつかのことを試みました...しかし運がありませんでした。

これは私のデータフレームです:

> df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3))
> df
  a b   c
1 1 2 2.6
2 2 6 8.2
3 4 2 7.5
4 2 1 3.0

私は試した:

> newV <- as.vector(df[1,])
> newV
  a b   c
1 1 2 2.6

しかし、私は本当にこのようなものが欲しいです:

> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6
4

6 に答える 6

182

データフレームから単一の行を抽出すると、1行のデータフレームが得られます。それを数値ベクトルに変換します。

as.numeric(df[1,])

@Rolandが提案するように、unlist(df[1,])は名前を削除せずに1行のデータフレームを数値ベクトルに変換します。したがってunname(unlist(df[1,]))、同じ結果を得るもう1つの、もう少し明確な方法があります。

@Joshが以下にコメントしているように、完全に数値ではない(アルファベット、因数分解、混合...)データフレームがある場合は、as.character(df[1,])代わりに必要です。

于 2013-01-23T16:42:50.770 に答える
53

名前を保持するをお勧めunlistします。

unlist(df[1,])
  a   b   c 
1.0 2.0 2.6 

is.vector(unlist(df[1,]))
[1] TRUE

名前付きベクトルが必要ない場合:

unname(unlist(df[1,]))
[1] 1.0 2.0 2.6
于 2013-01-23T16:49:23.333 に答える
12

dplyr基本的なオプションは次のとおりです。

newV = df %>% slice(1) %>% unlist(use.names = FALSE)

# or slightly different:
newV = df %>% slice(1) %>% unlist() %>% unname()
于 2019-03-20T14:12:19.007 に答える
8

数値に変更したくない場合は、これを試すことができます。

> as.vector(t(df)[,1])
[1] 1.0 2.0 2.6
于 2013-01-23T16:47:24.917 に答える
3

行に因子が含まれている場合は注意する必要があることに注意してください。次に例を示します。

df_1 = data.frame(V1 = factor(11:15),
                  V2 = 21:25)
df_1[1,] %>% as.numeric() # you expect 11 21 but it returns 
[1] 1 21

別の例を次に示します(デフォルトでは、data.frame()は文字を係数に変換します)

df_2 = data.frame(V1 = letters[1:5],
                  V2 = 1:5)
df_2[3,] %>% as.numeric() # you expect to obtain c 3 but it returns
[1] 3 3
df_2[3,] %>% as.character() # this won't work neither
[1] "3" "3"

この動作を防ぐには、要素を抽出する前に、要素に注意する必要があります。

df_1$V1 = df_1$V1 %>% as.character() %>% as.numeric()
df_2$V1 = df_2$V1 %>% as.character()
df_1[1,] %>% as.numeric()
[1] 11  21
df_2[3,] %>% as.character()
[1] "c" "3"
于 2018-10-25T04:46:02.057 に答える
-4

データフレームの列はすでにベクトルであり、それらを引き出す必要があります。必要な列をコンマの前ではなく、コンマの後に配置することに注意してください。

> newV <- df[,1]
> newV
[1] 1 2 4 2

実際に列が必要な場合は、ベンが言ったことを実行し、将来的に正しく単語を使用してください。

于 2013-01-23T16:42:33.583 に答える