R 在数据帧中使用sapply和特定阵列创建阵列
我想在R中使用R 在数据帧中使用sapply和特定阵列创建阵列,r,sapply,R,Sapply,我想在R中使用sapply创建一个数组。但我在数据帧中使用了3个向量。例如,如果a(I)+b(I)+c(I)=0,我想生成x(I)=0,其中a、b和c是来自数据帧的向量。这在sapply或mapply中可能吗 这里有一种可能性: set.seed(10) vex <- data.frame( a=sample(-1:1,size=10,replace=T), b=sample(-1:1,size=10,replace=T), c=sample(-1:1,size=10,repl
sapply
创建一个数组。但我在数据帧中使用了3个向量。例如,如果a(I)+b(I)+c(I)=0
,我想生成x(I)=0
,其中a
、b
和c
是来自数据帧的向量。这在sapply
或mapply
中可能吗 这里有一种可能性:
set.seed(10)
vex <- data.frame(
a=sample(-1:1,size=10,replace=T),
b=sample(-1:1,size=10,replace=T),
c=sample(-1:1,size=10,replace=T)
)
vex
x <- sapply(1:nrow(vex), function(i) ifelse(sum(vex[i,]==0),0,1))
x
set.seed(10)
vex假设x
预先初始化为所有,并且df
是包含a
、b
和c
的数据帧,那么一个简单的解决方案是:
x[with(df, a + b + c == 0)] <- 0
当条件不满足时,您希望x[i]
是什么?如果条件不满足,x(i)等于1。但这并不是关键。我预先把整个向量设置为一。我不懂你的代码。我是R的新手。你能解释一下你在sapply
函数中做了什么吗。我没有使用整个数据帧,只是数据帧中的几个向量。我不知道如何在你的代码中选择这些向量。哦,好吧。。。如果您只是实现了代码,我认为它是有意义的。您的具体需求是使用“sapply或mapply”,因此实现了此功能。另外还有很多不同的方法(正如@BrodieG!!)感谢您提到了的功能。它起作用了。但我的问题仍然存在。sapply或mapply可以工作吗?
[1] 1 1 0 1 1 0 1 1 1 1