繁体   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