【问题标题】:Convert Excel .xlsx to list of vectors in R将 Excel .xlsx 转换为 R 中的向量列表
【发布时间】:2023-04-04 06:18:02
【问题描述】:

将 .xlsx 文件导入 R(readxl 包)后,如何从中制作矢量列表(第一列作为矢量名称)?

.xlsx 输入示例(注意每行的列数可变):

row_1 | A | B |
row_2 | C | D | E |
row_3 | F | G | H | I |

我试图获得的输出:

$`row_1`
[1] "A" "B"

$`row_2` 
[1] "C" "D" "E" 

$`row_3`
[1] "F" "G" "H" "I" 

到目前为止我的尝试:

xcel <- read_excel("my_data.xlsx", col_names=F)
df <- scan(xcel)

我尝试了不同风格的命令行,但最终要么出现“文件错误(文件,“r”):无效的“描述”参数”或“扫描错误(xcel):“文件”必须是一个字符字符串或连接”,取决于我是否将“xcel”转换为数据框。

【问题讨论】:

  • “没有成功”是什么意思。有错误吗?一个警告?缺少值吗?似乎只需要一些数据整理就可以达到您想要的结果吗?

标签: r excel list


【解决方案1】:

你可以在read_excel的返回值上使用applyna.omit来得到你想要的:

xcel <- read_excel("my_data.xlsx", col_names=FALSE)
xl <- apply(xcel,1,function(r)as.vector(na.omit(r))[-1])
names(xl) <- xcel[[1]]

xl 看起来像:

$row_1
[1] "A" "B"

$row_2
[1] "C" "D" "E"

$row_3
[1] "F" "G" "H" "I"

【讨论】:

  • 矢量名称必须是 excel 文件的第一列,如给定示例中一样
  • @user31888 编辑后的代码现在将使用第一列中的字符串作为列表中向量的名称。它实际上比我的原始代码更容易,因为它不需要使用paste 来创建名称。
  • 太棒了!谢谢约翰!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多