我有一个52列,1290行的矩阵,其中包含我成功运行过的循环的p值和系数。
在这种情况下,我想根据关联的p值(第19列),通过在系数值的末尾附加星号来有条件地格式化变量的系数(r)值(第3列)。
当存在指数p值时,我无法成功附加"***"
,我也尝试设置options(scipen=999)
,但无济于事。我已经能够使用str_sub()
和stri_sub()
隔离p值中的'e',因此,如果可以让ifs在循环中正常工作,则可以使用if语句:>
# p<0.001 (append "***") # p<0.01 (append "**") # p<0.05 (append "*")
以下语句可以单独正常工作,但是当我将以下内容添加到for()
循环中时失败:
# Working asterisk append to coefficient value
if(as.numeric(cell_id_input) < 0.05) {
cell_id_out <- paste0(cell_id_out,"*", sep="")
}
使用指定的列(仅3和19)在矩阵“ dta”中的每一行上循环,并在满足以下条件时附加星号:
for (j in 1:nrow(dta)){
cell_id_input <- dta[j,19] # Column that contains associated (p) values for 'cell_id_out'
cell_id_out <- dta[j,3] { # Column that contains the coefficient (r) value associated with 'cell_id_input'
if(as.numeric(cell_id_input) < 0.001) {
cell_id_out <- paste0(cell_id_out,"***", sep="")
} else if (as.numeric(cell_id_input) < 0.01) {
cell_id_out <- paste0(cell_id_out,"**", sep="")
} else if(as.numeric(cell_id_input) < 0.05) {
cell_id_out <- paste0(cell_id_out,"*", sep="")
} else {
cell_id_out <- paste(cell_id_out)
}
答案 0 :(得分:0)
df=data.frame("a"=c(0.1,0.6,0.00000000001,0.000000002),
"b"=c(1,4,3,5),stringsAsFactors = FALSE)
df$a = as.character(df$a)
for (i in 1:nrow(df)){
if (as.numeric(df$a[i])<0.05){
df$a[i]=paste0(df$a[i],"*")
}
}
a b
1 0.1 1
2 0.6 4
3 1e-11* 3
4 2e-09* 5
这对我有用。您可以根据情况进行调整。您的问题是您将结果分配给cell_id_out
变量,而不是dta
数据框。