我有一个NList
数字向量列表,例如
[[1]]
[1] 1959 9 4 62
[[2]]
[1] 2280 2 13
[[3]]
[1] 15 4 13
[[4]]
[1] 2902 178 13
结构就像
list(c(1959, 13), c(2280, 178, 13), c(2612, 178, 13), c(2902,
178, 13), c(2389, 178, 13), c(216, 736, 13), c(2337, 178, 13),
c(2639, 2126, 13), c(2924, 676, 178, 13), c(2416, 674, 178,
13), c(2223, 13), c(842, 178, 13), c(2618, 1570, 178, 13),
c(854, 178, 13), c(1847, 178, 13), c(2529, 178, 13), c(511,
178, 13), c(2221, 736, 13), c(415, 674, 178, 13), c(2438,
178, 13), c(2127, 178, 13), c(1910, 2126, 13), c(1904, 674,
178, 13), c(2310, 674, 178, 13), c(1732, 178, 13), c(1843,
178, 13), c(2539, 178, 13), c(1572, 676, 178, 13), c(1616,
876, 13).....)
我想迭代这个列表中的数字向量,我想做一些事情:
sum<- 0
index<-1
list1 <- apply(NList,1,function (i){
#I want to get each of the numeric vector here
row <- NList[i]
#then I want to iterate the numeric vector for some calculation.
#I am expecting, for [[1]], I get f(1959,9)+f(9,4)+f(4,62), in which f is my customized function, below I use a simple multiple as example
for (j in (1:(length(row)-1)))
{
origin <- row[j]
dest <- row[j+1]
#a simple calculation example...I am expecting an array of sum which is the calculation result
sum[index] <- sum[index] + origin*dest
}
index <- index+1
})
但它不起作用并返回:
dim(X) must have a positive length
lapply 对我不起作用并将总和返回为 0 ...
listR1 <- lapply(NList,function (i){
row <- i
for (j in 1:length(row))
{origin <- row[j]
dest <- row[j+1]
sum[index] <- sum[index] + origin*dest
}
})
我错过了什么?我怎样才能做到这一点?
谢谢!