我已经将100个双列矩阵写入他们自己的单独文本文件中,现在需要将内容读回100个矩阵的列表中,以便我可以在此条目“ComputeStepSize”的底部执行命令。我的代码如下:
我将“listofmatrices1”中的100个矩阵中的每一个写入自己的文件中。
for(i in 1:length(listofmatrices1)){
write.table(listofmatrices1[[i]], file=(paste("traj1", as.character(i), ".txt", sep="")), row.names=FALSE, sep="\t")
}
使用sys()命令创建文件列表,以便我可以使用以下命令读取它们。
individualmatrices1<-system("ls /Users/Deirdreclarkson/rpractice/traj1*", intern=TRUE)
readTrajectory1 <- function(traj1) {
a <- read.table(traj1, sep="\t", header=TRUE)
return(a)
}
我使用“readTrajectory”将矩阵读入空列表。
trajectorieslist1<-vector("list", 100)
for (i in 1:length(individualmatrices1)){
val1 <- readTrajectory1(individualmatrices1[i])
trajectorieslist1[[i]]<-val1
}
列表中某个矩阵的标题:
X Y
112.4563 112.4563
110.1210 110.1210
109.2143 109.2143
108.1806 108.1806
107.3700 107.3700
我正在迭代矩阵2列并测量每个连续值之间的差异。
ComputeStepSize<-function(table){
deltastepY <- diff(table[,2][seq(1,length(table[,2]), 2)])
print(deltastepY)
deltastepX <- diff(table[,1][seq(1,length(table[,2]), 2)])
print(deltastepX)
overalldelta<-sqrt(deltastepY**2+deltastepX**2)
return(overalldelta)
}
使用for循环读取各个矩阵。
for (i in 100){
finalsteplist1<-ComputeStepSize(trajectorieslist1[i])
}
问题
Error in table[, 2] : incorrect number of dimensions
我不明白为什么会这样,因为我告诉“ComputeStepSize”命令只有2列 - “diff(table [,2] [seq(1,length [table [,2]), 2)])”。
我的文件处理中的任何一个地方都可能出现这种情况吗?
我已将其中一个文件的read.table分配给变量“a”并尝试使用ComputeStepSize(a)。这会返回一个通用调试器:
function (x, ...) UseMethod("print")
但我不能打印deltastepX或Y,因为它会导致命令无法在它们上面运行。
答案 0 :(得分:0)
Error in table[, 2] : incorrect number of dimensions
...我的文件处理中的任何一个地方都可以出错,这样就可以了 正在发生什么?
您在文件处理方面没有出错,您只是在
中使用了一般订阅运算符[
... ]
finalsteplist1<-ComputeStepSize(trajectorieslist1[i])
(产生列表的子列表)而不是用于选择单个元素的运算符[[
... ]]
:
finalsteplist1<-ComputeStepSize(trajectorieslist1[[i]])