r - 创建一个for循环以对数据框中的列值求和
问题描述
我是 r 的新手,所以我很难弄清楚这一点。我有一个数据框,我想创建一个带有for循环的向量,称为"SumQuadCol",其中 SumQuadCol[j] = 如果列类是数字,则列中包含的值的平方,并且 SumQuadCol[j] =如果类不是数字,则为 NA。
我试过这样的事情:
for (j in 1: ncol(dat)){
if (is.numeric(ncol(dat[j]))){
SumQuadCol <- (colSums(is.numeric(dat[j]))) ^2
}else {
(SumQuadCol = NA)}
}
但它不起作用。
解决方案
创建一个向量来存储结果,用于dat[[j]]
访问列的值。使用iris
数据集 -
dat <- iris
SumQuadCol <- numeric(length(dat))
for (j in seq_along(dat)) {
if (is.numeric(dat[[j]])) {
SumQuadCol[j] <- sum(dat[[j]]^2)
}else {
SumQuadCol[j] = NA
}
}
SumQuadCol
#[1] 5223.85 1430.40 2582.71 302.33 NA
您还可以使用sapply
-
sapply(dat, function(x) if(is.numeric(x)) sum(x^2) else NA)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 5223.85 1430.40 2582.71 302.33 NA
推荐阅读
- java - 以递归方法更新引用的值 - 最佳实践
- java - 如何修复此代码以满足要求?
- pyspark - pyspark - 并行化文件处理的问题
- html - 带有短垂直线的 CSS 样式导航栏
- php - 如何通过 Ajax jQuery 发送多个输入值
- python - 是否可以使 __init__ 文件动态描述父包?
- javascript - 使用jquery的相同嵌套数组数据的总和
- flutter - 如何在自己弹出时导航到命名路线?
- python - 请帮助计算使用 Python 或 Pandas 的设备数量?
- html - npm 包正在创建一个带有已编译 css 的 dist 文件夹,该 css 覆盖了主 css 文件夹