Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何更改奇数位置的元素?_R - Fatal编程技术网

R 如何更改奇数位置的元素?

R 如何更改奇数位置的元素?,r,R,我有一个15行6列的表格。假设我的第6栏是患者的血糖;我想将奇数位置上的所有元素乘以5,其余元素保持不变(仅针对特定列)。我该怎么做 如果处于奇数位置,则血糖*5。。。。。如果处于偶数位置,则保持不变 谢谢我们可以使用%%创建一个逻辑索引,为奇数位置提供TRUE,为偶数位置提供FALSE。然后在此基础上对第6列行进行子集划分,并用5乘以修改后的值 i1 <- as.logical(seq_len(nrow(df1)) %% 2) df1[[6]][i1] <- df1[[6]][i1

我有一个15行6列的表格。假设我的第6栏是患者的血糖;我想将奇数位置上的所有元素乘以5,其余元素保持不变(仅针对特定列)。我该怎么做

如果处于奇数位置,则血糖*5。。。。。如果处于偶数位置,则保持不变


谢谢

我们可以使用
%%
创建一个逻辑索引,为奇数位置提供TRUE,为偶数位置提供FALSE。然后在此基础上对第6列行进行子集划分,并用5乘以修改后的值

i1 <- as.logical(seq_len(nrow(df1)) %% 2)
df1[[6]][i1] <- df1[[6]][i1] * 5

i1假设我的数据是
data
,我将首先创建一个向量来存储
PatientProfile
数据帧中奇数行的所有索引:

odd_ind <-seq(1,nrow(PatientProfile),2)
odd_ind
# returns: 1   3   5   7   9  11  13  15

df您可以使用seq每隔一行索引一次:

# dummy data
df <-data.frame("x" = LETTERS[1:10], "h" = sample(c("M", "F"), replace = T, size = 10), "y" = sample(seq(1, 3, 1), replace = T, size = 10))


# index odd rows using seq
df[seq(1, length(df[,1]), 2), 3] <- df[seq(1, length(df[,1]), 2), 3] * 5
#虚拟数据

df我可以使用if-else或循环吗?谢谢我尝试了这里的每一个建议,没有一个对我有用。他们对我来说绝对是胡言乱语“我现在真的可以哭了”你能看看我提供的表格吗?看看你的表格,你正在尝试乘法第3列:我会更新代码,稍后再检查minute@r_beginner完成-查看我代码中的所有3-这告诉它应该关注哪个列,这是正确的。我需要将132(位置1)、79(位置3)、120(位置5)、89(位置7)、139(位置9)…分别乘以5。谢谢您的回复。我尝试了你的建议,但它把我的值变成了(1,0),然后我的新专栏给了我奇怪的十进制数,这就是为什么你应该提供一个可复制的例子
$
是创建一个新列,请确保完全按照我发布的步骤操作。但是,如果其他解决方案确实解决了您的问题,请忘记我的解决方案,并将其作为一个答案。@r\u初学者尝试我提供的代码
PatientProfile[甚至是ind,“bloodugar”]谢谢您的帮助。我需要用奇数乘以5;甚至不!“偶数”代表什么?@r\u初学者为您修复了代码。复制并运行我给你的三行代码,它就会工作
odd_ind
只是一个从1到15的赔率数字向量,对于一行为16或更少的数据帧(因此
nrow(PatientProfile)
)它对我很有效。请接受答案@r_初学者,并很高兴它帮助了你!我对奇怪的事情的解释清楚吗?我能回答你的问题。如果您能在乘法后为
BloodSugar
提供预期输出,那就更好了。
df<-data.frame('x'=rnorm(15),
               'y'=rnorm(15))

## tag odd row position 

df$odd.row<-as.numeric(row.names(df))%%2

## change the column, say x, base on odd.row
df$x.changed<-ifelse(df$odd.row ==1, df$x*5, df$x)
# dummy data
df <-data.frame("x" = LETTERS[1:10], "h" = sample(c("M", "F"), replace = T, size = 10), "y" = sample(seq(1, 3, 1), replace = T, size = 10))


# index odd rows using seq
df[seq(1, length(df[,1]), 2), 3] <- df[seq(1, length(df[,1]), 2), 3] * 5
# for loop
for(i in seq(1, length(df[,1]), 2)){
  df[i,3] <- 5 * df[i,3]
}

# ifelse
library("gtools")
df[,3] <- ifelse(odd(as.numeric(rownames(df))), 5 * df[,3], df[,3])