gpt4 book ai didi

r - 遍历每一列和每一行,做一些事情

转载 作者:行者123 更新时间:2023-12-04 11:14:16 24 4
gpt4 key购买 nike

我认为这是描述我想做的事情的最佳方式:

df$column <- ifelse(is.na(df$column) == TRUE, 0, 1)

但是列是动态的。这是因为我有大约 45 列都具有相同类型的内容,我想要做的就是检查每个单元格,如果其中有内容则将其替换为 1,如果没有则替换为 0。我当然尝试过很多不同的东西,但是由于 R 中似乎没有 df[index][column] ,我迷路了。我原以为这样的事情会起作用,但没有:
for (index in df) {
for (column in names(df)) {
df[[index]][[column]] <- ifelse(is.na(df[[index]][[column]]) == TRUE, 0, 1)
}
}

我可以用其他语言(甚至 Excel)快速做到这一点,但我只是在学习 R 并想了解为什么如此简单的事情在一种旨在处理数据的语言中似乎如此复杂。谢谢!

最佳答案

这个怎么样:

df.new = as.data.frame(lapply(df, function(x) ifelse(is.na(x), 0, 1)))
lapply将函数应用于数据框的每一列 df .在这种情况下,该函数执行 0/1 替换。 lapply返回一个列表。包裹在 as.data.frame将列表转换为数据框(这是一种特殊类型的列表)。

R您通常可以用 *apply 之一替换循环函数族。在这种情况下, lapply在数据框的列上“循环”。还有很多 R函数是“向量化的”,这意味着函数一次对向量中的每个值进行操作。在这种情况下, ifelse对数据框的整个列进行替换。

关于r - 遍历每一列和每一行,做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com