R 替换NA和x27;带向量的s

R 替换NA和x27;带向量的s,r,na,R,Na,我有一个矩阵16列366行,我想用向量长度16的值替换NA 一直以来,我都会遇到以下错误: for (i in 1:16) { for (j in 1:366) { if(is.na(ChSiz(i,j)==TRUE) { Error: unexpected '{' in: " for (j in 1:366) { if(is.na(ChSiz(i,j)==TRUE) {" > ChSiz[i,j]<-x[i] Error in ChSiz[i

我有一个矩阵16列366行,我想用向量长度16的值替换
NA

一直以来,我都会遇到以下错误:

for (i in 1:16) {
  for (j in 1:366) {
    if(is.na(ChSiz(i,j)==TRUE) {

Error: unexpected '{' in: 
"  for (j in 1:366) {
    if(is.na(ChSiz(i,j)==TRUE) {"
>        ChSiz[i,j]<-x[i]
Error in ChSiz[i, j] <- x[i] : object 'j' not found
>     }
Error: unexpected '}' in "    }"
>   }
Error: unexpected '}' in "  }"
> }
Error: unexpected '}' in "}"
for(1:16中的i){
对于(1:366中的j){
如果(is.na(ChSiz(i,j)=真){
错误:中出现意外的“{”:
“对于(j in 1:366){
如果(is.na(ChSiz(i,j)=真){”
>ChSiz[i,j]}
错误:“}”中出现意外“}”
> }
错误:“}”中出现意外“}”

从我读到的内容来看,您希望用向量的对应值替换矩阵每列中的
NA
s

假设这是您的数据集和替换向量

set.seed(1)
(m <- matrix(sample(c(NA, 1), 25, replace = TRUE), ncol = 5))
#      [,1] [,2] [,3] [,4] [,5]
# [1,]   NA    1   NA   NA    1
# [2,]   NA    1   NA    1   NA
# [3,]    1    1    1    1    1
# [4,]    1    1   NA   NA   NA
# [5,]   NA   NA    1    1   NA
(vec <- sample(5))
## [1] 2 1 5 3 4

这基本上是利用了
is.na
返回一个可以用作子集索引的逻辑矩阵和将
vec
转换为矩阵的
col
函数。

尝试
ChSiz[is.na(ChSiz)]什么是
ChSiz
?这是你的矩阵吗?那么你应该使用
[/code>而不是
。此外,您的
if
语句中缺少一个括号。最后,您可能不需要在此处嵌套
for
循环。请提供示例数据集和所需输出。
indx <- is.na(m)
m[indx] <- vec[col(m)][indx]
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    2    1    5    3    1
# [2,]    2    1    5    1    4
# [3,]    1    1    1    1    1
# [4,]    1    1    5    3    4
# [5,]    2    1    1    1    4