我有两个数据帧( eeg 和 p1_1_a )。他们看起来像这样:
> head(eeg)
wave_1
1 18.959
2 19.432
3 20.384
4 20.489
5 21.012
6 21.571
> nrow(eeg)
[1] 849
> class(eeg$wave_1)
[1] "numeric"
> head(p1_1_a)
Time Latency Amplitude Peak_Lenght
1 57.1184 7.90738 -0.388889 8.44690
2 123.3470 15.49230 -0.917778 5.51634
3 191.0920 11.87220 -0.466667 6.55066
4 249.1710 15.49230 -0.871111 5.68873
5 325.5090 10.32080 -0.388889 5.34396
6 385.6040 12.56180 -0.684444 4.82680
> class(p1_1_a$Time)
[1] "numeric"
> nrow(p1_1_a)
[1] 10
我想创建一个列表,该列表由wave_1中的数字组成,这些数字是与Time中每个数字最接近的较小数字。因此,该列表将包含10个数字,第一个将是56.678(wave_1 [48]),因为这是最接近Time [1](57.1184)的较小数字。我写了一个循环:
list <- c()
for(i in 1:nrow(p1_1_a$Time)){
if(eeg$wave_1 <= p1_1_a$Time[i]){
list <- max(eeg$wave_1[eeg$wave_1 <= p1_1_a$Time[i]])
}
}
但是我得到这个错误:
Error in 1:nrow(p1_1_a$Time) : argument of length 0
我尝试在网上搜索答案,但是我无法弄清楚。请帮助我。
答案 0 :(得分:0)
不确定代码的其余部分,但是p1_1_a$Time
是向量,而不是矩阵,因此无法执行nrow()
。尝试length(p1_1_a$Time)