Ice*_*nix 2 arrays indexing r vector
我需要访问向量中的索引(单个值).我以为它会类似于:
v1 <- c(a,b,c,d,e)
v1[3] = h
Run Code Online (Sandbox Code Playgroud)
但这似乎根本不起作用,其他人都知道如何做到这一点?
[编辑]好的回答你的一些问题,这里是我想要实现的整体大局:
MyDataR1 <- scan("myd1.txt",what='character')
MyDataR2 <- scan("myd2.txt",what='character')
MyDataR3 <- scan("myd3.txt",what='character')
MyDataR4 <- scan("myd4.txt",what='character')
AmpsR1 <- vector(mode='numeric',length=length(MyDataR1)-1)
AmpsR2 <- vector(mode='numeric',length=length(MyDataR2)-1)
AmpsR3 <- vector(mode='numeric',length=length(MyDataR3)-1)
AmpsR4 <- vector(mode='numeric',length=length(MyDataR4)-1)
AmpsR <- list(AmpsR1,AmpsR2,AmpsR3,AmpsR4)
DatesR <- list(DatesR1,DatesR2,DatesR3,DatesR4)
MyDataR <- list(MyDataR1,MyDataR2,MyDataR3,MyDataR4)
for (m in 1:length(MyDataR)){
mode(MyDataR[m])
length(MyDataR[m])
for (i in 2:length(MyDataR[m])){
temp <- unlist(strsplit(MyDataR[[m]][i],','))
DatesR[[m]][i-1] <- temp[2]
if (length(temp) == 7)
AmpsR[[m]][i-1] <- as.numeric(temp[6])
else
AmpsR[[m]][i-1] <- NA
end
Run Code Online (Sandbox Code Playgroud)
(我在某一点改变了我的策略,使用"c()"函数而不是创建列表,但是这也没有用.)所以我试图在列表中每个向量的每个值之间进行迭代并设置它的值,但是当我在for循环部分之后打印"AmpsR"时,所有值都是"0.000".我知道它正在读取的数据是有效的,因为当我打印"MyDataR1"时,它充满了所有相关的值.
有没有更好的方法来做这个想法或建议?感谢大家的投入.
[编辑]为我在提出另一个问题时添加的类似帖子道歉,只是这个问题没有直接解决我遇到的问题.无论从两者中找到答案,我现在已经更好地理解了列表和向量是如何工作的,我设法解决了我的问题(解决方案与Andrie回答的非常相似).
谢谢大家的帮助.
从你的问题来看,你的问题究竟是什么并不明显,但我猜它是以下之一:
选项1:使用引号来表示字符向量(字符串)
v1 <- c("a", "b", "c", "d", "e")
v1[3] <- "h"
v1
[1] "a" "b" "h" "d" "e"
Run Code Online (Sandbox Code Playgroud)
选项2:您尚未定义变量ae和h
> a <- 1
> b <- 2
> c <- 3
> d <- 4
> e <- 5
> h <- 8
> v1 <- c(a,b,c,d,e)
> v1[3] = h
> v1
[1] 1 2 8 4 5
Run Code Online (Sandbox Code Playgroud)
选项3:您打算创建列表并将其子集化
在这种情况下,你应该使用list而不是c.请记住,您使用双方括号索引列表.
a <- 1:5
b <- 6:10
c <- 11:15
d <- 16:20
e <- 21:25
h <- 26:30
v1 <- list(a,b,c,d,e)
v1[[3]] <- h
Run Code Online (Sandbox Code Playgroud)
列表:
v1
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 6 7 8 9 10
[[3]]
[1] 26 27 28 29 30
[[4]]
[1] 16 17 18 19 20
[[5]]
[1] 21 22 23 24 25
Run Code Online (Sandbox Code Playgroud)
清单第3项:
v1[[3]]
[1] 26 27 28 29 30
Run Code Online (Sandbox Code Playgroud)