在 1:200 之间添加只有奇数的新列

Add new column with only odd numbers between 1:200

我想在只包含 1:200 之间的奇数的数据框中创建一个新列。我正在使用“cbind”来添加新列,但我不确定如何指定我只想要奇数。现在我的代码行看起来像这样

odd <- cbind(rowNA, seq(1:200, by = 2 + 1))

编辑:我将添加我正在处理的作业中的其余 Rscript,看看是否有帮助

# Rassignment 2#

#Q1
#a
nums <- seq(1:100)

#b
tens <- rep(10, times = 100)

#c
ab <- data.frame(nums, tens)

#d
rowNA <- rbind(ab, c(NA))

#e
odd <- cbind(rowNA, seq(1, 200, by = 2))

我们可以使用 fromtoby 参数 seq

v1 <- seq(1, 200, by = 2)

另一种选择是使用模块 %% 并将奇数值存储在新向量中。然后使用 sample 我们可以使 cbind() 具有相同长度的向量:

set.seed(123)
#Data
rowNA <- rep(NA,17)
#Vector
v1 <- 1:200
v2 <- v1[v1%%2==1]
#Assign in function of length of rowNA
v3 <- sample(v2,length(rowNA),replace = T)
#Bind
odd <- cbind(rowNA, v3)

输出:

odd
      rowNA  v3
 [1,]    NA  61
 [2,]    NA 157
 [3,]    NA 101
 [4,]    NA  27
 [5,]    NA 133
 [6,]    NA  83
 [7,]    NA  99
 [8,]    NA  85
 [9,]    NA  27
[10,]    NA  49
[11,]    NA 179
[12,]    NA 181
[13,]    NA 137
[14,]    NA 181
[15,]    NA 113
[16,]    NA 183
[17,]    NA  17

使用如下解决方案:

#Bind error
odd <- cbind(rowNA, seq(1, 200, by = 2))

会 return 下一个错误,因为元素来自不同的维度:

Error in data.frame(..., check.names = FALSE) : 
  arguments imply differing number of rows: 17, 100

使用基础数学,奇数是 2k+1 如果我们想在 1:200 之间得到奇数,那么 k = 0:99 意味着

2*(0:99) + 1

Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 101, 100

意味着您需要在范围内包含 201 将公式重写为 2*(0:100) + 1

您可以使用 seq 尝试此方法:

odd <- cbind(rowNA, num = seq(1, by = 2, length.out = nrow(rowNA)))