首先对不起,如果这是一个愚蠢的问题......我正在学习R,并且真的没有太多的经验
我在R编程语言中有以下函数,即获取值和返回值。
dec2binSingle <- function(decimal) {
print(decimal)
binaryValue <- ""
index <- 0
decimal <- as.numeric(decimal)
while(decimal != 0) {
print(decimal)
temp <- as.numeric(decimal) %% 2
if (temp == 1) {
binaryValue <- paste("1", binaryValue, sep="", collapse = NULL)
decimal <- decimal - 1
} else {
binaryValue <- paste("0", binaryValue, sep="", collapse = NULL)
}
index <- index + 1
decimal <- decimal / 2
}
return(binaryValue)
}
该函数将十进制数转换为二进制数。
当我尝试调用该函数时,该函数完成且没有任何错误,但是当我尝试查看数据时,出现以下错误:
Error in View : 'names' attribute [200] must be the same length as the vector [1]
这就是调用函数的方式:
test_function <- function(value1) {return(dec2binSingle(as.numeric(unlist(value1))))}
data_example$tv <- with(data_example, test_function(data_example[which(colnames(data_example) == "numbers")]))
感谢任何帮助......谢谢
编辑:
我调用了单值的函数,它按预期工作。
> dec2binSingle(23)
[1] "10111"
>
答案 0 :(得分:1)
我希望这是您希望使用代码实现的目标。
#sample data
df <- data.frame(char1=c("abc","def","xyz"), num1=c(1,34,12), num2=c(34,20,8))
df
#function to convert decimal into binary
bin_func <- function(x) {gsub("^0+","",paste(rev(as.numeric(intToBits(x))), collapse=""))}
#verify which all columns are numeric
num_col <- sapply(df,is.numeric)
df1 <- as.data.frame(lapply(df[,num_col], FUN = function(x) {sapply(x, FUN = bin_func)}))
names(df1) <- paste(names(df1),"_converted",sep="")
#final dataframe having original as well as converted columns
df <- cbind(df,df1)
df
如果有帮助,请不要告诉我们。)