我有一个snps数据框及其各自的代理。
我想在代理列中每次出现“警告”时替换前一列中的字符,即在snp列中。
所以,如果我有
snp proxy
rs272653 rs235343
rs35775 WARNING
rs726354 rs28635
我想:
snp proxy
rs272653 rs235343
rs35775 rs35775
rs726354 rs28635
sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.1 LTS
答案 0 :(得分:1)
我有什么遗失的吗?如果df是你的数据框,它应该是直截了当的。
df[df$proxy == "WARNING", "proxy"] <- df[df$proxy == "WARNING", "snp"]
答案 1 :(得分:0)
一种选择是使用正则表达式(regexpr
)和一种机制来替换与另一个字符串(regmatches<-
)的匹配。您的数据:
x <- structure(list(snp = c("rs272653", "rs35775", "rs726354"), proxy = c("rs235343", "**WARNING**", "rs28635")), .Names = c("snp", "proxy"), class = "data.frame", row.names = c(NA, -3L))
代码。请注意,regmatches<-
是R中使用副作用进行更改的少数几个函数之一:尽管此调用返回(无形地)向其输入的向量(x$snp
),它正在更改x$proxy
的内部存储空间。
regmatches(x$proxy, gregexpr("warning", x$proxy, ignore.case = TRUE)) <- x$snp
x
# snp proxy
# 1 rs272653 rs235343
# 2 rs35775 **rs35775**
# 3 rs726354 rs28635
答案 2 :(得分:0)
最重要的是,谢谢大家的答案!
因此,我的数据框data
包含列&#34; SNP&#34;和#34;代理&#34;。这些都是因素!因此,我必须首先确切地知道&#34; SNP&#34;专栏有&#34;警告&#34;在&#34;代理&#34;列,然后将其添加到&#34;代理&#34;中的级别。
data[data$Proxy == "WARNING", "SNP"]
#[1] rs11571833 rs17879961 rs12048493 rs72755295 rs9257408
levels(data$Proxy) <- c(levels(data$Proxy), "rs11571833", "rs17879961", "rs12048493", "rs72755295", "rs9257408")
只有这样才会@code_is_entropy
回答工作!对不起,对不起!
data[data$Proxy == "WARNING", "Proxy"] <- data[data$Proxy == "WARNING", "SNP", drop = FALSE]
干杯!