R的两个数据格式化问题

Tim*_*Tim 3 formatting if-statement r

我有两个问题,两个都很简单我相信处理R.

我想创建一个IF语句,它将NA值分配给列中的某些行.我尝试了以下命令:

a[a[,21]==0,5:10] <-NA
Run Code Online (Sandbox Code Playgroud)

错误说:

[< - .data.frame(tmp,a [,21] == 0,5:20,value = NA)中的错误:在数据帧的下标分配中不允许缺少值

本质上,该代码应该在第21列中取任何0值,并将该行的值从第5列到第10列替换为NA.第21栏已有NA,但我不确定这是否有效?

我不知道如何制作下一个功能.我需要操纵包含正面和负面控件的数据.但是,当我操纵数据时,我不希望正面和负面控制值分开操作,但我希望正面和负面控件保留在列中,因为我必须稍后使用它们.反正有没有暂时忽略这些值,所以它们不包含在操作中?

这里有样本数据:

L = c(2,1,4,3,1,4,2,4,5,1) 
R = c(2,4,5,1,"Neg",2,"",1,2,1) 
T = c(2,1,4,2,"CTRL",2,"PCTRL",2,1,4) 
test <- data.frame(L=L,R=R,T=T)
Run Code Online (Sandbox Code Playgroud)

我希望能够根据字符"Neg""CTRL"/"""PCTRL"暂时忽略这些行,而不是它们在数据帧中的位置(如果可能).注意负控制,Neg和CTRL如何在单独的列中,相同的行,就像正控制一样,其中有一个空白而PCTRL在单独的列中但是相同的行.鉴于这些奇怪的条件,有什么办法吗?

希望这写得足够清楚,我提前感谢任何人花时间来帮助我!

Ale*_*rdt 5

尝试将数据帧子集化为R不是"Neg"的行:

subset(test, R!="Neg")
Run Code Online (Sandbox Code Playgroud)

对于NA问题,您的数据框中可能已经有NA,对吧?尝试这是否有效:

a[a[,21] %in% 0, 5:10] <- NA
Run Code Online (Sandbox Code Playgroud)