r - 循环不起作用并且不会在 R 中引发任何错误

标签 r list dataframe for-loop if-statement

我正在处理一个 df 列表,我想为列表中每个 df 的每个 df 行的每个 df 列更改此错字“-”。

然而,当我运行下一个代码然后 unlist 以验证它是否有效时,输出仍然是相同的“-”而不是 NA:

for(i in 1:length(df_list)){
      for(j in i){
        for(z in j){
          if(df_list[[i]][[j]][[z]] == "-"){
            return(NA)
          } else {
            df_list[[i]][[j]][[z]] 
          }
        }
      }
}

## unlist to verify ##
for(i in names(df_list)){
    assign(i, df_list[[i]], .GlobalEnv)
}

##verifying ##
df1[1, "col"]

// output //

"-"

无论如何,在 R 中是否可以使用其他对象执行此操作?

最佳答案

不需要那么多嵌套的for循环,一个简单的lapply循环就会把所有数据帧中的"-"都改成不适用

df_list <- lapply(df_list, function(x){
  is.na(x) <- x == "-"
  x
})

测试数据创建代码

f <- function(i){
  d <- data.frame(x = letters[1:5], y = 6:10, a = letters[1:5])
  d$x[sample(5, 1)] <- "-"
  d$a[sample(5, 2)] <- "-"
  d
}
df_list <- lapply(1:3, f)
rm(f)

关于r - 循环不起作用并且不会在 R 中引发任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64054714/

相关文章:

r - 从pairwise.t.test 中提取t 值

r - 如何读取xlsb文件?

java - 无法获取Java中特定索引中的对象

python - 如何创建空列表列表

python - 基于字符串分类变量生成数值分类变量

r - 绘制由颜色定义的散点图时使用多个 if else

r - 代表错误(1,n.ahead): invalid 'times' argument in R

python - Pandas:当大小不相等时,如何将 Python 列表中的值分配给数据框中的列

list - 如何启用专业?

python - 如何通过复制上一行来动态创建新行