Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在数据帧中使用sapply和特定阵列创建阵列_R_Sapply - Fatal编程技术网

R 在数据帧中使用sapply和特定阵列创建阵列

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

我想在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,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