R - 使用 for 循环测试多个数据帧

标签 r variables testing for-loop

在 R 中,我尝试使用 for 循环和嵌套测试,以便将列附加到多个数据帧。

我在 1) 使用变量名调用数据框和 2) 使用逻辑测试跳过时遇到问题。

例如,我用一个数字创建了 3 个数据框,我想添加一个列,该列是该值的平方根。如果它会导致错误,我想跳过数据框。

以下是我到目前为止所做的:

df1 <- data.frame(a=c(1))
df2 <- data.frame(a=c(6))
df3 <- data.frame(a=c(-3))

df_lst$b<-
for(df_lst in c("df1","df2","df3"){
    ifelse(is.na(df_lst$a) = T, skip,
           df_list$b <- sqrt(df1$a)

})

在上面的示例中,理想情况下,我希望看到 df1df2 有一个新列 b,其平方根为 a,然后 df3 没有任何反应。

非常感谢任何帮助,谢谢大家!

最佳答案

如果您需要对所有 data.frames 进行操作,那么让一堆名称不同的 data.frames 通常不是一个好主意。您最好将它们存储在列表中。例如

mydfs<-list(df1, df2, df3)

然后您可以使用 lapply 等来处理那些 data.frames。例如

mydfs<-lapply(mydfs, function(x) {
    if(all(x$a>0)) {
        x$b<-sqrt(x$a)
    }
    x;
})

否则,将您的代码更改为

for(df_lst in c("df1","df2","df3")) {
    df<-get(df_lst)
    if( all(df$a>=0) ) {
       df$b <- sqrt(df$a)
    }
    assign(df_lst, df)
}

应该也可以,只是通常不被认为是好的做法。

关于R - 使用 for 循环测试多个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683458/

相关文章:

c - 可以从 C 或 Fortran 中读取 .Rdata 文件格式吗?

r - 在文档对象中发现错误的\usage 行

r - 更改填充颜色方向

php - 将内联 HTML 存储在 PHP 变量中

javascript - 动态快照测试

r - 按时间仓提取向量名称

variables - 代码的最后一部分中的错误与其余代码完全相同

java - java线程的共享变量

c# - 是否可以使用 Moq 在 C# 中模拟模拟的 "type name"?

应用程序购买中的 IO - 沙盒的报告/交易日志