R 数据帧上素数函数的运行应用
我正在使用apply对数据帧的行应用素数函数来查找索引数据帧。给定的输出应该是以任意或所有数字作为素数的行。示例数据帧名称c4: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
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), ]