在 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))
我们可以使用 from
、to
和 by
参数 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)))
我想在只包含 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))
我们可以使用 from
、to
和 by
参数 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)))