我正在使用data.frame:
data.frame("A"=c(NA,5,NA,NA,NA),
"B"=c(1,2,3,4,NA),
"C"=c(NA,NA,NA,2,3),
"D"=c(NA,NA,NA,7,NA))
Run Code Online (Sandbox Code Playgroud)
这提供了以下形式的data.frame:
A B C D
1 NA 1 NA NA
2 5 2 NA NA
3 NA 3 NA NA
4 NA 4 2 7
5 NA NA 3 NA
Run Code Online (Sandbox Code Playgroud)
我的目的是检查data.frame的每一行,如果有一个值大于特定的值(让我们假设为2),并获得列的名称.
所需的输出(值大于2)应为:
for row 1 of the data.frame
x[1,]: c()
for row 2
x[2,]: c("A")
for row3
x[3,]: c("B")
for row4
x[4,]: c("B","D")
and for row5 of the data.frame
x[5,]: c("C")
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我想知道在R中创建自己的函数时如何处理NA值.
我的代码如下:
# The function is simple:
function.BHR <-function(x) prod(1+x)-1
# The structure of the data.frame:
dat <- t(data.frame(
"A"=c(20:29/100),
"B"=c(35:44/100),
"C"=c(20:29/100),
"E"=c(50:57/100,NA,NA),
"E"=c(45:51/100,NA,NA,NA))
apply(dat,2,function.BHR)
Run Code Online (Sandbox Code Playgroud)
简单的apply函数为最后三列提供了NA.取而代之的是
它应该应用所有非NA值的函数.因此:
for column 8:
function.BHR(c(0.27,0.42,0.27,0.57))
[1] 2.595799
for column 9:
function.BHR(c(0.28,0.43,0.28))
[1] 1.342912
for column 10:
function.BHR(c(0.29,0.44,0.29))
[1] 1.396304
Run Code Online (Sandbox Code Playgroud)
提前致谢!
乔治·