【发布时间】:2011-09-06 15:19:27
【问题描述】:
我最近发布了一个类似的问题,但是我并没有真正收到答案。 我需要访问一个向量列表中的一个向量,这是目前代码的样子:
MyDataR1 <- scan("D:\\R Code\\Residential\\bvl5 res.txt",what='character')
MyDataR2 <- scan("D:\\R Code\\Residential\\bvl5 res.txt",what='character')
MyDataR3 <- scan("D:\\R Code\\Residential\\cpk11 res.txt",what='character')
MyDataR <- c(MyDataR1,MyDataR2,MyDataR3)
print (MyDataR[3])
但是打印命令实际上并没有打印第三个向量 (MyDataR3),它从第一个向量 (MyDataR1) 中打印出第三个值
有什么方法可以访问向量中的各个向量吗?我将如何访问向量中向量的单个值?我以为它会是这样的:
MyDataR[[3]][5] <- 5 #this would access the 5th value of the 3rd vector and modifies it
任何帮助将不胜感激。
【问题讨论】:
-
str(MyDaraR1)和str(MyDaraR)向我们展示了什么?我怀疑c()操作只是将三个向量卡在一个向量中,因此观察到了行为。如果您将每个向量放入一个列表中,那么您显示的内容应该可以工作;MyDataR[[3]]将返回列表的第三个组件,并且您显示的替换代码也将起作用。通过MyDataR <- list(MyDataR1,MyDataR2,MyDataR3)形成您的列表 -
这与您一周前提出的问题基本相同:Is there a way to access an index within a vector。即使@Andrie 向您展示了他对您之前问题的回答的不同之处,您仍然会将向量与列表混淆。
-
@Ice Phoenix:不要看这个评论;它会进一步混淆。 @Joshua Ulrich:试试
is.vector(list())。 -
@Richie Cotton:是的,列表在技术上是向量,但我遇到的大多数 R 用户将原子类型称为“向量”,将“列表向量”称为“列表”。这很令人困惑。你会如何解释得更清楚?