[英]Character vector to dataframe in R
我有以下字符向量:
da <- c(" 1 1 0 0 0 0 0 7.071", " 2 0 0 1 0 1 1 3.033", " 3 1 1 0 0 1 0 4.095")
我希望它成為 dataframe ,其中每個拆分值都是一個新單元格,字符中的每個元素都是一個新行。 所以它會變成:
1 | 1 | 0 | 0 | 0 | 0 | 0 | 7.071
2 | 0 | 0 | 1 | 0 | 1 | 1 | 3.033
3 | 1 | 1 | 0 | 0 | 1 | 0 | 4.095
直接強制到 dataframe 或列表然后 dataframe 不起作用。
read.table
+ paste
df <- read.table(text = paste(da,sep = "\n"),
header = FALSE)
strsplit
+ rbind
,例如,df <- as.data.frame(do.call(rbind,strsplit(trimws(da)," ")))
這樣
> df
V1 V2 V3 V4 V5 V6 V7 V8
1 1 1 0 0 0 0 0 7.071
2 2 0 0 1 0 1 1 3.033
3 3 1 1 0 0 1 0 4.095
首先,您要使用stringr::str_trim
修剪前導空格,然后使用stringr::str_split
將每個 substring 拆分為空格分隔符。 這將返回一個嵌套列表,您可以將其取消列出,轉換為矩陣,然后轉換為 data.frame。
da <- c(" 1 1 0 0 0 0 0 7.071", " 2 0 0 1 0 1 1 3.033", " 3 1 1 0 0 1 0 4.095")
a = stringr::str_split(stringr::str_trim(da), pattern=" ")
df = data.frame(matrix(unlist(a), nrow=length(a), byrow=T))
不是很優雅,但它確實有效。
library(dplyr)
library(stringr)
da <- da %>%
str_trim() %>%
str_split(., " ") %>%
data.frame %>%
t
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.