R 数据帧上素数函数的运行应用

R 数据帧上素数函数的运行应用,r,dataframe,apply,R,Dataframe,Apply,我正在使用apply对数据帧的行应用素数函数来查找索引数据帧。给定的输出应该是以任意或所有数字作为素数的行。示例数据帧名称c4: c1 c2 c3 1 8 2 6 2 9 5 4 3 10 4 5 4 7 1 8 5 3 1 2 6 7 5 9 7 5 1 4 8 2 1 3 9 7 2 4 10 10 4 8 给定的输出应该是 c1 c2 c3 1 8 2 6 2 9 5 4 3 10 4 5 4 7 1

我正在使用apply对数据帧的行应用素数函数来查找索引数据帧。给定的输出应该是以任意或所有数字作为素数的行。示例数据帧名称c4:

c1 c2 c3
1   8  2  6
2   9  5  4
3  10  4  5
4   7  1  8
5   3  1  2
6   7  5  9
7   5  1  4
8   2  1  3
9   7  2  4
10 10 4 8

给定的输出应该是

c1 c2 c3
1  8  2  6
2  9  5  4
3 10  4  5
4  7  1  8
5  3  1  2
6  7  5  9
7  5  1  4
8  2  1  3
9 7 2 4

删除第十行。 我用于素数的代码是


prime.function使用此处提供的prim函数:


首先,
prime.function
是检查
x
是否为prime的一种非常低效的方法。例如,除其他事项外,只需检查小于或等于
sqrt(x)
的数字,而不必检查
x-1
。其次,您声明“代码抛出错误”;产生了哪些错误?例如,目前
prime.function
有一个输入错误(
TURE
而不是
TRUE
);还有其他错误吗?在我看来,你想检查行号是否为素数。如果是这样,为什么要在整个
data.frame
中循环?除非我误解,
df[sapply(1:nrow(df),prime.function),]
应该足够了。
is.prime <- function(n) n == 2L || all(n %% 2L:max(2,floor(sqrt(n))) != 0)
# replicate your data frame
c4_check <- c4

# replace the items with booleans in the replicate
c4_check[] <- sapply(unlist(c4), is.prime)

# filter the original data frame using the replicate
c4[rowSums(c4_check) != 0, ]
c4[sapply(1:nrow(c4), is.prime), ]