【发布时间】:2019-12-31 12:27:06
【问题描述】:
我正在尝试构建一个 R 代码,它将占用我的循环并运行 20 次。每次我想在现有数据框中添加一列。在这里,我尝试了 3 次添加代码,但我觉得必须有一种更简单的方法来自动化它。我非常感谢任何帮助。
我的原始数据文件(称为“igel”)包含两列(“年份”和“网格”)和 1096 行。通过循环,我从“网格”列中选择一个随机数,并检查它之前是否被选择过。如果是,则将 0 添加到新列,如果不是,则添加 1。
代码如下:
a <- data.frame(matrix(ncol = 2, nrow = 0))
x <- c("number", "count")
colnames(a) <- x
for (i in 1:1096) {
num_i <- sample(igel$Grid, 1)
count_i <- c(if (num_i %in% a$number == TRUE) {0} else {1})
a<-a %>% add_row(number = num_i, count = count_i)
}
b <- data.frame(matrix(ncol = 2, nrow = 0))
x <- c("number", "count")
colnames(b) <- x
for (i in 1:1096) {
num_i <- sample(igel$Grid, 1)
count_i <- c(if (num_i %in% b$number == TRUE) {0} else {1})
b<-b %>% add_row(number = num_i, count = count_i)
}
c <- data.frame(matrix(ncol = 2, nrow = 0))
x <- c("number", "count")
colnames(c) <- x
for (i in 1:1096) {
num_i <- sample(igel$Grid, 1)
count_i <- c(if (num_i %in% c$number == TRUE) {0} else {1})
c<-c %>% add_row(number = num_i, count = count_i)
}
df.total<- cbind(a$count,b$count, c$count)
【问题讨论】:
-
@Parfait,如何将行中的数字相加而不是将它们打印为 1 或 0?可以在代码中轻松实现吗?
-
请在我的实际答案下方提问,而不是在您的问题下方提问。另外,你想总结一行的列作为结果吗?如果是这样,请查看
colSums。
标签: r loops repeat calculated-columns