2016-09-30 39 views
4

一個R數據框在一個鍛鍊,我要創建這樣一個數據幀:如何創建由

Name <- c("Sam","Frank","Amy") 
Age <- c(22,25,26) 
Weight <- c(150,165,120) 
Sex <- c("M", "M", "F") 
df <- data.frame (row.names = Name, Age, Weight, Sex) 

所以基本上我創建列,然後根據這些列的數據幀。

如果我有以下矢量並且想要創建相同的數據框,該怎麼辦?有沒有辦法?

Sam <- c(22,150, 'M') 
Frank <- c(25, 165, 'M') 
Amy <- c(26, 120, 'F') 

感謝

+1

問題:'C(22,150, 'M')'將數字轉換成字符串:載體只能是一個 「類」數據,所以'邏輯<整數<數字<字符'。雖然不是基於R,但是['frame_data'](https://blog.rstudio.org/2016/03/24/tibble-1-0-0/)允許按行創建數據的視圖.frame(儘管不是以您建議的特定方式)。 – r2evans

回答

3

試試這個:

df <- as.data.frame(rbind(Sam, Frank, Amy), stringsAsFactors = FALSE) 
names(df) <- c('Age' , 'weight', 'Sex') 

df 
     Age Weight Sex 
Sam 22 150 M 
Frank 25 165 M 
Amy 26 120 F 

如果你所關心的變量的類型,你可以另外做轉換:

df$Age <- as.integer(df$Age) 
df$weight <- as.integer(df$weight) 
df$Sex <- as.factor(df$Sex) 

或者我們可以使用type.convert

df <- data.frame(lapply(df, type.convert)) 
+0

你可以包含'str(df)'的輸出嗎?我的猜測是,它不會是什麼意圖(「年齡」和「重量」將是因素,而不是數字)。 – r2evans

+0

我看到你在說什麼,更新了,這應該可以工作 –

+0

由於stringsAsFactors = FALSE已經完成,所以這個變量是字符(而不是因子),現在如果我們想要它作爲因子,那麼我們需要將它強制爲因子。 –

0

這裏使用transposemget一個選項

nm1 <- c("Sam", "Frank", "Amy") 
`row.names<-`(data.frame(setNames(lapply(data.table::transpose(mget(nm1)), 
      type.convert), c("Age", "Weight", "Sex"))), nm1) 
     Age Weight Sex 
# Sam 22 150 M 
# Frank 25 165 M 
# Amy 26 120 F