簡體   English   中英

R 中的 dataframe 的字符向量

[英]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 不起作用。

  • 一個基本的 R 選項是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM