Error: replacement has 1810947 rows and data has 1810956 (same each time) for pupil data
Error: replacement has 1810947 rows and data has 1810956 (same each time) for pupil data
我在 R(数据)中有一个大型数据框,由 23 个 .gazedata 文件组成(每个主题一个):
filenames <- list.files("~/Desktop/DUT Analyses 2019", pattern = "*.gazedata", full.names = TRUE)
ldf <- lapply(filenames, read_tsv)
data <- do.call("rbind", ldf)
创建因子和时间变量后,我根据眼动仪收集的默认有效性参数创建瞳孔变量:
data$DiameterPupilLeftEye[data$ValidityLeftEye != 0] <- NA
data$DiameterPupilRightEye[data$ValidityRightEye != 0] <- NA
data$pupil = rowMeans(select(data, DiameterPupilLeftEye, DiameterPupilRightEye), na.rm = TRUE)
现在,我需要创建一个插值瞳孔变量 (pupil_inter) 以将值插值到最大间隙 4:
data$pupil_inter<- na.approx(data$pupil, rule = 2, maxgap = 4)
但是出现如下错误:
Error in `$<-.data.frame`(`*tmp*`, pupil_inter, value = c(4.2120165, 4.20966425, :
replacement has 1810947 rows, data has 1810956
这些行数每次都完全相同。
至关重要的是,如果我从预处理中排除主题 22 和 23 .gazedata 文件,则后一个代码有效并且没有错误
我已尝试确定一个现有的 "replacement has [x] rows, data has [y]" 问题来帮助解决我的具体问题,但找不到相关的解决方案。所有 .gazedata 文件都是使用相同的硬件和软件收集的。
错误仍然存在,即使首先使用以下代码成功创建空 pupil_inter 变量也是如此:
data$pupil_inter <- NA
提前感谢您提供的任何建议。
错误的发生是因为 na.approx()
函数返回的行数少于您传入的行数,因此您尝试将一个包含 1,810,947 行的列附加到一个包含 1,810,956 行的数据框。查看 na.approx()
的文档后,我发现有一个 na.rm
参数。如果为真(默认情况下为真),它将从返回值中删除 NAs
并且您的行数将比开始时少。如果将其设置为 false,将返回 NAs
并且您应该具有相同的行数。试试这个:
data$pupil_inter<- na.approx(data$pupil, rule = 2, maxgap = 4, na.rm = FALSE)
我在 R(数据)中有一个大型数据框,由 23 个 .gazedata 文件组成(每个主题一个):
filenames <- list.files("~/Desktop/DUT Analyses 2019", pattern = "*.gazedata", full.names = TRUE)
ldf <- lapply(filenames, read_tsv)
data <- do.call("rbind", ldf)
创建因子和时间变量后,我根据眼动仪收集的默认有效性参数创建瞳孔变量:
data$DiameterPupilLeftEye[data$ValidityLeftEye != 0] <- NA
data$DiameterPupilRightEye[data$ValidityRightEye != 0] <- NA
data$pupil = rowMeans(select(data, DiameterPupilLeftEye, DiameterPupilRightEye), na.rm = TRUE)
现在,我需要创建一个插值瞳孔变量 (pupil_inter) 以将值插值到最大间隙 4:
data$pupil_inter<- na.approx(data$pupil, rule = 2, maxgap = 4)
但是出现如下错误:
Error in `$<-.data.frame`(`*tmp*`, pupil_inter, value = c(4.2120165, 4.20966425, :
replacement has 1810947 rows, data has 1810956
这些行数每次都完全相同。
至关重要的是,如果我从预处理中排除主题 22 和 23 .gazedata 文件,则后一个代码有效并且没有错误
我已尝试确定一个现有的 "replacement has [x] rows, data has [y]" 问题来帮助解决我的具体问题,但找不到相关的解决方案。所有 .gazedata 文件都是使用相同的硬件和软件收集的。
错误仍然存在,即使首先使用以下代码成功创建空 pupil_inter 变量也是如此:
data$pupil_inter <- NA
提前感谢您提供的任何建议。
错误的发生是因为 na.approx()
函数返回的行数少于您传入的行数,因此您尝试将一个包含 1,810,947 行的列附加到一个包含 1,810,956 行的数据框。查看 na.approx()
的文档后,我发现有一个 na.rm
参数。如果为真(默认情况下为真),它将从返回值中删除 NAs
并且您的行数将比开始时少。如果将其设置为 false,将返回 NAs
并且您应该具有相同的行数。试试这个:
data$pupil_inter<- na.approx(data$pupil, rule = 2, maxgap = 4, na.rm = FALSE)