目标:将list数据转换为data.frame
> class(mat_data1)
#[1] "data.frame"
> class(mat_data2)
#[1] "list"
查看数据类型发现一个是list,一个是data.frame。
这里以纬度、经度、NDVI 三列的list为例子,将其转化为data.frame
# 安装 R.matlab 包(如果尚未安装)
# install.packages("R.matlab")
# 加载 R.matlab 包
library(R.matlab)
# 读取 MAT 文件
mat_data <- readMat("C:/Users/y8143/Desktop/rs投稿/result.mat")
# 查看读取的数据结构
str(mat_data)
# 提取数据
result <- mat_data$result
# 将 result 转换为 data.frame
# 假设 result 是一个包含三列的矩阵或数据框
lat <- result[, 1]
lon <- result[, 2]
ndvi <- result[, 3]
# 创建数据框
df <- data.frame(lat = lat, lon = lon, ndvi = ndvi)
# 查看数据框的前几行
head(df)
# 保存数据框到文件(可选)
write.csv(df, file = "C:/Users/y8143/Desktop/rs投稿/result.csv", row.names = FALSE)
结果:
批量代码:
# 安装 R.matlab 包(如果尚未安装)
# install.packages("R.matlab")
# 加载 R.matlab 包
library(R.matlab)
# 读取 MAT 文件
mat_data <- readMat("C:/Users/y8143/Desktop/rs投稿/result.mat")
# 查看读取的数据结构
str(mat_data)
# 提取数据
result <- mat_data$result
# 确保 result 是一个矩阵或数据框,并且有 22 列
if (ncol(result) != 22) {
stop("The result matrix does not have 22 columns as expected.")
}
# 创建列名向量
col_names <- c("lat", "lon", as.character(2000:2019))
# 将 result 转换为数据框并设置列名
df <- as.data.frame(result)
names(df) <- col_names
# 查看数据框的前几行
head(df)
# 保存数据框到文件(可选)
write.csv(df, file = "C:/Users/y8143/Desktop/rs投稿/result.csv", row.names = FALSE)